Une fois que l’utilisateur clique sur le bouton dans ma demande, je tiens à ouvrir l’application Google Map standard et de montrer son emplacement particulier. Comment puis-je faire ? (sans utiliser de `` )
Réponses
Trop de publicités?Vous pouvez aussi simplement utiliser des http://maps.google.com/maps comme votre URI
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f", sourceLatitude, sourceLongitude, destinationLatitude, destinationLongitude);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);
ou vous pouvez assurez-vous que l'application Google Maps seulement est utilisé, cela empêche le filtre d'intention (boîte de dialogue) d'apparaître, en utilisant
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
comme suit:
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f", sourceLatitude, sourceLongitude, destinationLatitude, destinationLongitude);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
ou vous pouvez ajouter des étiquettes sur les lieux par l'ajout d'une chaîne à l'intérieur de parenthèses après chaque série de coordonnées comme suit:
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?saddr=%f,%f(%s)&daddr=%f,%f (%s)", sourceLatitude, sourceLongitude, "Home Sweet Home", destinationLatitude, destinationLongitude, "Where the party is at");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
Pour utiliser les utilisateurs de l'emplacement actuel comme point de départ (malheureusement, je n'ai pas trouvé un moyen de l'étiquette à l'emplacement actuel) puis il suffit de déposer l' saddr
le paramètre comme suit:
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?daddr=%f,%f (%s)", destinationLatitude, destinationLongitude, "Where the party is at");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
Pour être complet, si l'utilisateur ne dispose pas de l'application maps installé, alors ça va être une bonne idée d'attraper le ActivityNotFoundException, comme @TonyQ unis, alors nous pouvons commencer la reprise de l'activité sans l'application cartes de restriction, nous pouvons être à peu près sûr que nous n'arriverons jamais à le Toast à la fin, depuis un navigateur internet, la demande est valable pour le lancement de ce schéma d'url.
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?&daddr=%f,%f (%s)", 12f, 2f, "Where the party is at");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
try
{
startActivity(intent);
}
catch(ActivityNotFoundException ex)
{
try
{
Intent unrestrictedIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(unrestrictedIntent);
}
catch(ActivityNotFoundException innerEx)
{
Toast.makeText(this, "Please install a maps application", Toast.LENGTH_LONG).show();
}
}
À l'aide de la Chaîne de format d'aider, mais vous devez être soin complet avec les paramètres régionaux. En allemagne, le flotteur sera sépare en virgule au lieu d'un point.
À l'aide de String.format("geo:%f,%f",5.1,2.1);
sur les paramètres régionaux anglais le résultat sera "geo:5.1,2.1"
mais avec des paramètres régionaux de l'allemand, vous obtiendrez "geo:5,1,2,1"
Vous devez utiliser les paramètres régionaux anglais pour éviter ce problème.
String uri = String.format(Locale.ENGLISH, "geo:%f,%f", latitude, longitude);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
context.startActivity(intent);
Pour définir une étiquette à la géo point vous pouvez étendre votre geo uri, en utilisant:
!!! mais attention à ce que la géo-uri est encore en développement http://tools.ietf.org/html/draft-mayrhofer-geo-uri-00
String uri = String.format(Locale.ENGLISH, "geo:%f,%f?z=%d&q=%f,%f (%s)",
latitude, longitude, zoom, latitude, longitude, label);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
context.startActivity(intent);
Consultez cette page de google :
http://developer.Android.com/guide/Appendix/g-app-Intents.html
Vous pouvez utiliser un URI de la forme geo:latitude, longitude
pour ouvrir la visionneuse de carte google et qu’il pointe vers un emplacement.
Cordialement, Stéphane