Ich arbeite mit Google Maps in meiner Android-App. Ich muss die Karte am aktuellen Standort des Kunden neu zentrieren. Ich habe folgende Aussage verwendet -
map.setmylocationenabled(true);
Dies zeigt eine Schaltfläche oben rechts an, aber das Klicken funktioniert nicht.
Die Schaltfläche Klick-Listener:
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;
}
});
Nehmen Sie einfach den Code aus meiner anderen Antwort hier , und ändern Sie Ihren Knopf.
mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
@Override
public boolean onMyLocationButtonClick() {
if (mGoogleApiClient != null) {
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
return false;
}
});
Der Code in onLocationChanged () zentriert dann die Kameraposition neu und nimmt die Registrierung für Standortaktualisierungen wieder auf:
@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);
}
}
Die letzte Zeile war eine Lösung für mich:
myMap.setMyLocationEnabled(true);
myMap.getUiSettings().setMyLocationButtonEnabled(true);
Haben Sie nach der Verwendung von setmylocationenabled(true)
versucht, Ihren Breiten- und Längengrad zu ermitteln?
beispiel
gMap.setMyLocationEnabled(true);
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
gMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
sie können jetzt Ihren Breiten- und Längengrad verwenden und die Kamera an die Lat/Lng-Position animieren, die Sie erhalten. Hoffentlich hilft es.
Sie sollten setMyLocationEnabled (boolean enabled)
hinzufügen.
Aktiviert oder deaktiviert die Meine-Standort-Ebene.
Wenn diese Option aktiviert ist und der Standort verfügbar ist, wird der Layer my-location zeichnet kontinuierlich den aktuellen Standort eines Benutzers und Peilung und zeigt Steuerelemente der Benutzeroberfläche an, mit denen ein Benutzer mit .__ interagieren kann. deren Position (z. B. um die Kameraüberwachung von ihrer Position und Peilung zu aktivieren oder zu deaktivieren).
Um die My-Location-Layer-Funktion verwenden zu können, müssen Sie .__ anfordern. Berechtigung für entweder ACCESS_COARSE_LOCATION oder ACCESS_FINE_LOCATION Es sei denn, Sie haben eine benutzerdefinierte Standortquelle festgelegt.
DEMO
Sie sollten dies im Abschnitt onMapReady (GoogleMap googleMap)
hinzufügen.
@Override
public void onMapReady(GoogleMap googleMap) {
googleMapOBJ = googleMap;
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
googleMapOBJ.setMyLocationEnabled(true);
googleMapOBJ.getUiSettings().setMyLocationButtonEnabled(true);