2016-01-05 25 views
6

Pracuję z Google Maps w mojej aplikacji na Androida. Muszę przywrócić mapę do aktualnej lokalizacji klienta. Użyłem poniższego oświadczenia -map.setmylocationenabled (true) nie działa

map.setmylocationenabled(true); 

Wyświetla przycisk w prawym górnym rogu, ale kliknięcie nie działa.

Kliknij przycisk słuchacz:

mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() { 
       @Override 
       public boolean onMyLocationButtonClick() { 
        mMap.addMarker(new MarkerOptions().position(myLatLng).title("My Location")); 
        mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myLatLng, zoomLevel)); 
        return false; 
       } 
      }); 
+0

To właśnie włącza przycisk (domyślnie jest włączony). Powinieneś uzyskać lokalizację za pomocą FusedLocationProviderApi, a następnie przenieść/przybliżyć kamerę mapy do aktualnej pozycji, patrz tutaj: http://stackoverflow.com/a/34582595/4409409 –

+0

Spróbuj ustawić znacznik w tej lokalizacji i wtedy dostaniesz kliknięcie znacznika. –

+0

@DanielNugent Wyświetlam mapę wyśrodkowaną przy pierwszym uruchomieniu mapy. Problem pojawia się, gdy poruszam się po mapie i chcę zająć ostatnie kliknięcie na ekranie. –

Odpowiedz

2

Wystarczy wziąć kod z my other answer here i zmodyfikować Kliknij przycisk słuchacza poprosić inną lokalizację:

  mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() { 
       @Override 
       public boolean onMyLocationButtonClick() { 
        if (mGoogleApiClient != null) { 
         LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); 
        } 
        return false; 
       } 
      }); 

Kod w onLocationChanged() będzie następnie ponownie wyśrodkować położenie kamery, a następnie wyrejestrować dla lokalizacja aktualizuje znowu:

@Override 
public void onLocationChanged(Location location) 
{ 
    mLastLocation = location; 
    if (mCurrLocationMarker != null) { 
     mCurrLocationMarker.remove(); 
    } 

    //Place current location marker 
    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 
    MarkerOptions markerOptions = new MarkerOptions(); 
    markerOptions.position(latLng); 
    markerOptions.title("Current Position"); 
    markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)); 
    mCurrLocationMarker = mGoogleMap.addMarker(markerOptions); 

    //move map camera 
    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
    mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(11)); 

    if (mGoogleApiClient != null) { 
     LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); 
    } 
} 
+0

Dzięki, ale już to rozwiązałem. –

+0

'onMyLocationButtonClick' w' setOnMyLocationButtonClickListener' nawet nie wywołuje! Ani 'com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener()' ani 'com.androidmapsextensions.GoogleMap.OnMyLocationButtonClickListener()' –

+0

@ Mr.Hyde To powinno działać. Zobacz oficjalną dokumentację: https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#setOnMyLocationButtonClickListener(com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener) –

2

Próbowano uzyskać szerokość i długość geograficzną, po użyciu setmylocationenabled(true)?

przykład

gMap.setMyLocationEnabled(true); 
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 
gMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 

można teraz korzystać z szerokości i długości geograficznej oraz animowanie aparat do lat/lng lokalizacji, którą get.Hope to pomaga.

+1

Zrobione, ale bez różnicy –

4

ostatni wiersz był rozwiązanie dla mnie:

myMap.setMyLocationEnabled(true); 
myMap.getUiSettings().setMyLocationButtonEnabled(true);