2012-12-07 9 views
5

Niebieska kropka/strzałka nie wyświetla się na mojej mapie. Wszystko inne działa dobrze. Czy brakuje niektórych uprawnień?Android Google Maps V2 Lokalizacja użytkownika

Zawarte klasy Java, Manifest i układ XML.

private void setUpMap(int satelliteMode, LatLng startPoint, float zoomLevel) { 

     mapView.getUiSettings().setZoomControlsEnabled(false); 
     //mapView.getUiSettings().setMyLocationButtonEnabled(false); 
     mapView.setMapType(satelliteMode); 
     mapView.setMyLocationEnabled(true); 
     mapView.moveCamera(CameraUpdateFactory.newLatLngZoom(startPoint, zoomLevel)); 
    } 

xml:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/mapview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment"/> 

oczywisty:

<permission 
     android:name="com.example.project.MAPS_RECEIVE" 
     android:protectionLevel="signature"/> 
    <uses-permission android:name="com.example.project.MAPS_RECEIVE"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-feature android:glEsVersion="0x00020000" android:required="true"/> 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 

     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="API_KEY"/> 
+0

Czy to działa z aplikacją Google Maps na tym urządzeniu? W nowszych wersjach Androida występuje problem polegający na tym, że musisz zezwolić Mapom Google w szczególności na obszar Konta aplikacji Ustawienia, aby móc korzystać z GPS. Można sobie wyobrazić, że ma to również wpływ na rzeczy w Mapach V2. – CommonsWare

+0

Niestety, niebieska kropka pojawia się dobrze w aplikacji Google Maps w mojej Samsung Galaxy S2 –

+0

Ustawienia urządzenia w mojej aplikacji mówią nawet, że ta aplikacja może uzyskać dostęp do "Twojej lokalizacji" (również "Komunikacja sieciowa"). –

Odpowiedz

0

Z jakiegoś powodu po prostu zadziałało. Odszedł na lunch i zostawił aplikację. Kiedy wróciłem, niebieska strzałka została narysowana na mapie. Nie w odpowiednim miejscu, ale było na mapie. Tak więc mój opublikowany kod działa. Potrzebuje tylko aktualizacji od menedżera lokalizacji.

+0

Po uruchomieniu kodu trasy pojawia się błąd, że ** java.lang.ClassCastException: android.support.v4.app.NoSaveStateFrameLayout nie można przesłać na com.google.android.gms.maps.MapView ** Używam Google Inc. : Google APIs: 10 i MAP V2 też. –

3

Można by zobaczyć, że klikając przycisk 'Moje położenie' tworzy niebieską kropkę w swojej bieżącej lokalizacji. Używanie menedżera lokalizacji do śledzenia aktualizacji lokalizacji i odpowiedniego przesuwania kamery pozwala również śledzić użytkownika, bez klikania przycisku. Zobacz poniższy fragment.

LocationListener ll = new LocationListener() { 

     @Override 
     public void onLocationChanged(Location arg0) { 
      Toast.makeText(getBaseContext(), "Moved to "+arg0.toString(), Toast.LENGTH_LONG).show(); 
      CameraPosition cp = new CameraPosition.Builder() 
      .target(new LatLng(arg0.getLatitude(),arg0.getLongitude())) 
      .zoom(12) 
      .build();  
      map.animateCamera(CameraUpdateFactory.newCameraPosition(cp)); 
     } 
} 
+0

Gdzie rejestrujesz tego słuchacza? Czy jest to usługa systemowa 'LocationManager' zamiast' Map'? – dnkoutso

+0

kliknięcie przycisku mojej lokalizacji nie tworzy nawet niebieskiej kropki w moim przypadku. –

+0

Tak, menedżer LocationManager, jak w: LocationManager.requestLocationUpdates (dostawca, czas, odległość, LocationListener); – soujisama

0

FWIW, mam dokładnie ten sam problem co oryginalny wpis na karcie Samsung Galaxy Tab 2. Jednak nie mam problemu na Archos 101G9.

Jeśli uruchomię się ponownie, załaduję moją aplikację za pomocą Google Maps v2 i kliknę przycisk "idź do mojej lokalizacji" w prawym górnym rogu, Archos przejdzie bezpośrednio do mojej bieżącej lokalizacji, ale SGT2 nic nie robi.

Jeśli ręcznie pobiorę moją bieżącą lokalizację za pomocą menedżera lokalizacji i animuję mapę, to nawiguje. Jednak kliknięcie przycisku "idź do mojej lokalizacji" nadal nie działa.

Uzyskanie poprawki lokalizacji za pomocą GPS wydaje się naprawić problem.

EDIT: Na SGT2 niebieska kropka lokalizacji pojawia się tylko z poprawką GPS, jednak Archos wyświetla niebieską kropkę z mobilną poprawką danych/WiFi.

0

Witam w FragmentActivity dodać narzędzi LocationListener

private LocationManager locationManager; 

W onCreate(Bundle savedInstanceState) .... dodać

locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 

Criteria locationCriteria = new Criteria(); 
locationCriteria.setAccuracy(Criteria.ACCURACY_FINE);  locationManager.requestLocationUpdates(locationManager.getBestProvider(locationCriteria, true), 1L, 2F, this); 

i wdrożone Methos do LocationListener;)

Powiązane problemy