2016-01-05 25 views
6

Sto lavorando con Google Maps nella mia app Android. Devo aggiornare la mappa alla posizione corrente del cliente. Ho usato la seguente dichiarazione -map.setmylocationenabled (true) non funziona

map.setmylocationenabled(true); 

Questo visualizza un pulsante in alto a destra ma facendo clic su questo non funziona.

Il pulsante scatto ascoltatore:

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

Questo abilita solo il pulsante (è anche abilitato di default). Dovresti ottenere la posizione usando FusedLocationProviderApi e quindi spostare/zoomare la camera della mappa nella posizione corrente, vedi qui per un esempio: http://stackoverflow.com/a/34582595/4409409 –

+0

Prova a impostare un indicatore su quella posizione e quindi otterrai l'evento click di marker. –

+0

@DanielNugent Ottengo centrato la mappa al primo avvio della mappa. Il problema si presenta quando mi muovo sulla mappa e voglio ripetere la posizione corrente sullo schermo con quel clic del pulsante. –

risposta

2

Basta prendere il codice my other answer here, e modificare il tasto di scatto ascoltatore richiedere un'altra posizione:

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

Il codice in onLocationChanged() sarà poi ri-centrare la posizione della fotocamera, e quindi annullare la registrazione per posizione aggiorna ancora:

@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

Grazie ma l'ho già risolto. –

+0

'onMyLocationButtonClick' in' setOnMyLocationButtonClickListener' non chiama nemmeno! Né 'com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener()' né 'com.androidmapsextensions.GoogleMap.OnMyLocationButtonClickListener()' –

+0

@ Mr.Hyde Dovrebbe funzionare. Vedi qui per la documentazione ufficiale: https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#setOnMyLocationButtonClickListener(com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener) –

2

Hai cercato di ottenere la vostra latitudine e longitudine, dopo aver usato setmylocationenabled(true)?

esempio

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

ora è possibile utilizzare il latitudine e longitudine, e animare la fotocamera alla posizione lng/lat che si get.Hope aiuta.

+1

Fatto ma senza differenza –

4

L'ultima riga è stata una soluzione per me:

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