wake-up-neo.com

map.setmylocationenabled (true) funktioniert nicht

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;
                }
            });
8
Venu Saini

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);
    }
}
4
Daniel Nugent

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.

3
Kristo

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);
2
IntelliJ Amiya