web-dev-qa-db-fra.com

map.setmylocationenabled (true) ne fonctionne pas

Je travaille avec Google Maps dans mon application Android. Je dois recentrer la carte sur l'emplacement actuel du client. J'ai utilisé la déclaration suivante - 

map.setmylocationenabled(true);

Cela affiche un bouton en haut à droite mais en cliquant cela ne fonctionne pas.

Le bouton clic écouteur:

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

Il suffit de prendre le code de mon autre réponse ici , et modifiez votre clic sur le programme d'écoute pour demander un autre emplacement:

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

Le code dans onLocationChanged () recentrera ensuite la position de la caméra, puis se désenregistrera pour les mises à jour d'emplacement:

@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

La dernière ligne était une solution pour moi:

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

Avez-vous essayé d'obtenir votre latitude et votre longitude après avoir utilisé setmylocationenabled(true)?

exemple

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

vous pouvez maintenant utiliser votre latitude et votre longitude et animer la caméra à l'emplacement que vous avez trouvé.Vous espérez que cela vous aidera.

3
Kristo

Vous devriez ajouter setMyLocationEnabled (boolean enabled) .

Active ou désactive la couche my-location.

Lorsqu'elle est activée et que l'emplacement est disponible, la couche my-location dessine en permanence une indication de l'emplacement actuel d'un utilisateur et roulement, et affiche les contrôles de l'interface utilisateur qui permettent à un utilisateur d'interagir avec leur emplacement (par exemple, pour activer ou désactiver le suivi par caméra de leur emplacement et leur orientation).

Pour utiliser la fonctionnalité my-location-layer, vous devez demander autorisation pour ACCESS_COARSE_LOCATION ou ACCESS_FINE_LOCATION sauf si vous avez défini une source d'emplacement personnalisé.

DÉMO

Vous devriez ajouter ceci dans onMapReady (GoogleMap googleMap) section.

 @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