Comment puis-je montrer emplacement actuel sur une Carte Google maps sur Android Guimauve?
Je veux google maps pour afficher l'emplacement de l'utilisateur. J'ai essayé ce code mais il ne fonctionne pas sur Android 6.
private GoogleMap map;
LocationManager lm;
LocationListener ll;
Location l;
LatLng pos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start_layout);
lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
ll = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
l = (Location) location;
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onProviderDisabled(String provider) {}
};
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.nMap);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
map = googleMap;
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
lm.requestLocationUpdates(lm.NETWORK_PROVIDER, 0, 0, ll);
}
pos = new LatLng(l.getLatitude(), l.getLongitude());
//Add a marker in Sydney and move the camera
map.setMyLocationEnabled(true);
map.addMarker(new MarkerOptions().position(pos).title("Marker in Sydney"));
map.moveCamera(CameraUpdateFactory.newLatLng(pos));
}
Voici les autorisations, j'ai mis:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
- En quoi il n'a pas de travail? Crash? Mauvais endroit? Vérifiez aussi votre logcat pour toutes les erreurs et de les poster ici.
Vous devez vous connecter pour publier un commentaire.
Pour l'utilisation de FusedLocationProviderClient avec Google Play Services 11 et plus:
voir ici:
Comment obtenir de l'Emplacement actuel dans GoogleMap l'aide de FusedLocationProviderClient
Pour l'utilisation (aujourd'hui obsolète) FusedLocationProviderApi:
Si votre projet utilise des Google Play Services inférieur ou égal à 10, à l'aide de la FusedLocationProviderApi est le choix optimal.
La FusedLocationProviderApi offre moins de drainage de la batterie de l'ancien open source LocationManager API.
Aussi, si vous utilisez déjà Google Play Services de Google Maps, il n'y a aucune raison de ne pas l'utiliser.
Voici une Activité de classe qui place un Marqueur à l'emplacement actuel, et déplace la caméra à la position actuelle.
Il vérifie également l'Emplacement de l'autorisation au moment de l'exécution pour Android 6 et plus tard (Guimauve, Nougat, Oreo).
Afin de gérer correctement l'Emplacement de l'autorisation d'exécution vérification qui est nécessaire sur Android M/Android 6 et plus tard, vous devez vous assurer que l'utilisateur a accordé à votre application à l'Emplacement de l'autorisation avant d'appeler
mGoogleMap.setMyLocationEnabled(true)
et aussi avant de demander de l'emplacement des mises à jour.activity_main.xml:
Résultat:
Montrer autorisation explication si nécessaire en utilisant un AlertDialog (ce qui se passe si l'utilisateur refuse une demande d'autorisation, ou qui accorde l'autorisation, puis plus tard, révoque les paramètres):
Invite l'utilisateur à l'Emplacement de l'autorisation par appel
ActivityCompat.requestPermissions()
:Déplacer la caméra à l'emplacement actuel et le Marqueur de lieu lorsque l'Emplacement de l'autorisation est accordée:
import com.google.android.gms.location.LocationListener;
, voir ici pour les importations: stackoverflow.com/a/31448567/4409409mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,11));
Place de ces 2 lignes. Réduire 1 ligne de code et fonctionne mieux. Ses 2 lignes pas toujours déplacer la caméra à l'emplacement actuel.map.addMarker()
méthode pour chaque Marqueur.import com.google.android.gms.location.LocationRequest;
GoogleApiClient is not connected yet.
.mGoogleApiClient.connect();
getlastlocation()
dans cette réponse....Désolé mais c'est juste beaucoup trop de frais généraux (ci-dessus), court et rapide, si vous avez la MapFragment, vous avez également à la carte, il suffit de faire les opérations suivantes:
Code est dans Kotlin, j'espère que vous n'avez pas l'esprit.
avoir du plaisir
Btw, je pense que c'est un doublon de: Afficher l'Emplacement à l'intérieur de Google Fragment de Carte
googleMap?.isMyLocationEnabled = true
.Tout d'abord assurez-vous que votre Clé API est valide et d'ajouter ceci dans votre manifeste
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Voici mes cartes de l'activité.. il pourrait y avoir certaines informations redondantes puisque c'est à partir d'un plus grand projet que j'ai créé.
Il y a beaucoup de méthodes ici qui sont difficiles à comprendre, mais, fondamentalement, toutes les mise à jour de la carte quand il est en pause, etc. Il y a aussi les délais de connexion etc. Désolé pour juste cette annonce, j'ai essayé de corriger votre code, mais je ne pouvais pas comprendre ce qui n'allait pas.