Vous pouvez également simplement utiliser http://maps.google.com/maps comme URI
String uri = "http://maps.google.com/maps?saddr=" + sourceLatitude + "," + sourceLongitude + "&daddr=" + destinationLatitude + "," + destinationLongitude;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);
ou vous pouvez vous assurer que seule l'application Google Maps est utilisée, cela empêche le filtre d'intent (dialogue) de s'afficher, en utilisant
intent.setPackage("com.google.android.apps.maps");
comme ceci:
String uri = "http://maps.google.com/maps?saddr=" + sourceLatitude + "," + sourceLongitude + "&daddr=" + destinationLatitude + "," + destinationLongitude;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
startActivity(intent);
ou vous pouvez ajouter des libellés aux emplacements en ajoutant une chaîne entre parenthèses après chaque jeu de coordonnées comme ceci:
String uri = "http://maps.google.com/maps?saddr=" + sourceLatitude + "," + sourceLongitude + "(" + "Home Sweet Home" + ")&daddr=" + destinationLatitude + "," + destinationLongitude + " (" + "Where the party is at" + ")";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
startActivity(intent);
Pour utiliser l'emplacement actuel de l'utilisateur comme point de départ (malheureusement je n'ai pas trouvé de moyen d'étiqueter l'emplacement actuel) alors il suffit de supprimer le paramètre saddr
comme suit:
String uri = "http://maps.google.com/maps?daddr=" + destinationLatitude + "," + destinationLongitude + " (" + "Where the party is at" + ")";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
startActivity(intent);
Pour plus de complétude, si l'utilisateur n'a pas l'application de cartes installée, il sera judicieux de capturer l'ActivityNotFoundException, comme le mentionne @TonyQ, alors nous pouvons démarrer l'activité à nouveau sans la restriction de l'application de cartes, nous pouvons être assez sûrs que nous n'arriverons jamais au Toast à la fin car un navigateur internet est une application valide pour lancer ce schéma d'URL aussi.
String uri = "http://maps.google.com/maps?daddr=" + 12f + "," + 2f + " (" + "Where the party is at" + ")";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
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();
}
}
ÉDITER:
Pour les directions, un intent de navigation est désormais pris en charge avec google.navigation
Uri navigationIntentUri = Uri.parse("google.navigation:q=" + 12f + "," + 2f);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, navigationIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);