2016-01-05 3 views
6

ich mit Google Maps in meinem Android App arbeite. Ich muss die Karte auf den aktuellen Standort des Kunden zentrieren. Ich habe die folgende Anweisung verwendet -map.setmylocationenabled (true) nicht funktioniert

Dies zeigt eine Schaltfläche oben rechts, aber das Klicken funktioniert nicht.

Der Klick Hörer-Taste:

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

Das aktiviert nur die Schaltfläche (es ist auch standardmäßig aktiviert). Sie sollten die Position mit der FusedLocationProviderApi, und dann die Karte Kamera auf die aktuelle Position verschieben/zoomen, siehe hier für ein Beispiel: http://stackoverflow.com/a/34582595/4409409 –

+0

Versuchen Markierung zu setzen an diesem Standort und dann erhalten Sie Klickereignismarker. –

+0

@DanielNugent Ich bekomme die Karte beim ersten Start der Karte zentriert. Das Problem tritt auf, wenn ich mich auf der Karte bewege und den aktuellen Standort auf dem Bildschirm mit dem Klick dieser Schaltfläche wiederherstellen möchte. –

Antwort

2

Nehmen Sie einfach den Code aus my other answer here und Ihre Schaltfläche klicken Hörer ändern einen anderen Ort zu beantragen:

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

Der Code in OnLocationChanged() wird dann die Kameraposition neu zu zentrieren, und dann un-Register für Standort-Updates wieder:

@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

Danke, aber ich habe es bereits gelöst. –

+0

'onMyLocationButtonClick' in' setOnMyLocationButtonClickListener' rufen Sie nicht einmal an! Weder 'com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener()' 'noch com.androidmapsextensions.GoogleMap.OnMyLocationButtonClickListener()' –

+0

@ Mr.Hyde sollte es funktionieren. Sehen Sie hier für offizielle Dokumentation: https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#setOnMyLocationButtonClickListener(com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener) –

2

Haben Sie versucht, Ihre geografische Breite und Länge zu erhalten, nach setmylocationenabled(true) mit?

Beispiel

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

Sie jetzt Ihre geografische Breite und Länge, und animieren die Kamera an den lat/lng Standort verwenden können, die Sie hilft es get.Hope.

+1

Fertig, aber kein Unterschied –

4

Die letzte Zeile eine Lösung für mich war:

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