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;
}
});
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);
}
}
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.
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);