J'ai une application où je souhaite afficher différents emplacements (un à la fois, sélectionnés par l'utilisateur) en lançant Google Maps avec leurs coordonnées géographiques spécifiques.
J'utilise actuellement ceci (avec de vraies valeurs lat et longues. Bien sûr):
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?z=17"));
startActivity(intent);
C'est exactement ce que je veux, sauf qu'il ne montre aucun indicateur ni marqueur pour le point spécifié. Il se concentre uniquement sur son emplacement.
Existe-t-il un moyen d’obtenir le marqueur ou autre chose incluse sans utiliser MapView?
Essaye ça:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)"));
startActivity(intent);
Vous pouvez omettre (étiquette + nom) si vous ne voulez pas d’étiquette et elle en choisira une au hasard en fonction de la rue la plus proche ou de tout autre élément qu’elle jugera pertinent.
La réponse acceptée est correcte, sauf si votre étiquette contient une esperluette (&).
Regardant n identificateur de ressource uniforme pour les emplacements géographiques ('geo' URI) :
La section 5.1 stipule:
si l'URI final doit inclure un composant 'requête', ajoutez le délimiteur de composant "?" à la fin du résultat, suivi de la chaîne de requête codée.
Malheureusement pour nous, cela échappera également au '=' qui n'est pas ce que nous voulons.
Nous devrions faire ceci:
String label = "Cinnamon & Toast";
String uriBegin = "geo:12,34";
String query = "12,34(" + label + ")";
String encodedQuery = Uri.encode(query);
String uriString = uriBegin + "?q=" + encodedQuery;
Uri uri = Uri.parse(uriString);
Intent intent = new Intent(Android.content.Intent.ACTION_VIEW, uri);
startActivity(intent);
Double myLatitude = 44.433106;
Double myLongitude = 26.103687;
String labelLocation = "Jorgesys @ Bucharest";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<" + myLatitude + ">,<" + myLongitude + ">?q=<" + myLatitude + ">,<" + myLongitude + ">(" + labelLocation + ")"));
startActivity(intent);
String urlAddress = "http://maps.google.com/maps?q="+ myLatitude +"," + myLongitude +"("+ labelLocation + ")&iwloc=A&hl=es";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlAddress));
startActivity(intent);
String urlAddress = "http://maps.googleapis.com/maps/api/streetview?size=500x500&location=" + myLatitude + "," + myLongitude + "&fov=90&heading=235&pitch=10&sensor=false";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlAddress));
startActivity(intent);
Cette chaîne fonctionne bien pour moi:
String geoUriString="geo:"+lat+","+lon+"?q=("+head+")@"+lat+","+lon;
Uri geoUri = Uri.parse(geoUriString);
Log.e(TAG, "String: "+geoUriString);
Intent mapCall = new Intent(Intent.ACTION_VIEW, geoUri);
startActivity(mapCall);
Essayez d’ajouter (LocationMarkerName) au fichier geo: uri. Par exemple, "geo:,? Z = 17 (LocationMarkerName)"
Dans Google Maps sur Android, recherchez 23.0980,30.6797 (NamedMarker), il semble centrer la carte et positionner un marqueur portant le nom NamedMarker à cette position.
Je viens de confirmer l'extrait suivant de @Kenton Price fonctionne toujours sur Android 4.4 (KitKat):
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)"));
startActivity(intent);
J'ai utilisé les superpositions avec MapView uniquement pour dessiner des marqueurs au-dessus d'une carte. Si votre vue montre votre carte, il pourrait être possible de simplement dessiner votre marqueur au centre de l'écran, de la même manière que vous dessineriez une image sur une vue.
Cependant, le marqueur ne serait pas lié aux coordonnées réelles de la carte, mais s'il ne s'agissait que d'une vue statique, cela pourrait suffire.