L'application Google Maps pour Android expose plusieurs intents que vous pouvez utiliser pour lancer Google Maps en mode affichage, recherche, navigation ou Street View. Pour intégrer une carte à votre application, consultez le guide de démarrage rapide du SDK Maps pour Android.
Pour les plates-formes Android Automotive OS (AAOS), des considérations spécifiques et des intents supplémentaires sont disponibles. Pour en savoir plus, consultez la documentation sur les intents Google Maps pour Android Automotive.
Présentation
Les intents vous permettent de démarrer une activité dans une autre application en décrivant une action
que vous souhaitez effectuer (comme "afficher une carte" ou "afficher l'itinéraire vers l'
aéroport") dans un Intent objet. L'application Google Maps pour Android
accepte plusieurs intents différents,ce qui vous permet de lancer l'application Google Maps
et d'effectuer l'une des quatre actions suivantes :
- Afficher une carte à un emplacement et avec un niveau de zoom spécifiés.
- Rechercher des lieux ou des adresses, et les afficher sur une carte.
- Demander un itinéraire d'un lieu à un autre. L'itinéraire peut être fourni pour trois modes de transport : voiture, marche et vélo.
- Afficher des images panoramiques dans Google Street View.
Cette page décrit les intents que vous pouvez utiliser avec l'application Google Maps pour Android. Pour en savoir plus sur les intents, consultez Intents et filtres d'intent et Intents courants.
Requêtes d'intent
Pour lancer Google Maps avec un intent, vous devez d'abord créer un Intent
objet, en spécifiant son action, son URI et son package.
- Action : tous les intents Google Maps sont appelés en tant qu'action View
ACTION_VIEW. - URI : les intents Google Maps utilisent des URI encodés au format URL qui spécifient une action sélectionnée, ainsi que des données permettant d'effectuer l'action.
Package : l'appel de
setPackage("com.google.android.apps.maps")garantit que l'application Google Maps pour Android gère l'intent. Si le package n'est pas défini, le système détermine les applications qui peuvent gérer l'Intent. Si plusieurs applications sont disponibles, l'utilisateur peut être invité à sélectionner celle qu'il souhaite utiliser.
Après avoir créé l'Intent, vous pouvez demander au système de lancer l'application associée de plusieurs manières. Une méthode courante consiste à transmettre le Intent à la
startActivity() méthode. Le système lance l'application nécessaire (dans ce cas, Google Maps) et démarre l'Activity correspondante.
Java
// Create a Uri from an intent string. Use the result to create an Intent.
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988");
// Create an Intent from gmmIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);
Kotlin
// Create a Uri from an intent string. Use the result to create an Intent.
val gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988")
// Create an Intent from gmmIntentUri. Set the action to ACTION_VIEW
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps")
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent)
Si le système ne parvient pas à identifier une application pouvant répondre à l'intent, votre application peut se bloquer. Pour cette raison, vérifiez d'abord qu'une application de réception est installée avant de présenter l'un de ces intents à un utilisateur.
Pour vérifier qu'une application est disponible pour recevoir l'intent, appelez
resolveActivity() sur votre Intent objet. Si le résultat n'est pas une valeur nulle, cela signifie qu'au moins une application peut gérer l'intent et que vous pouvez appeler startActivity() sans risque. Si le résultat est null, n'utilisez pas l'intent et, si possible, désactivez la fonctionnalité qui l'appelle.
Java
if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}
Kotlin
mapIntent.resolveActivity(packageManager)?.let {
...
}
Par exemple, pour afficher une carte de San Francisco, vous pouvez utiliser le code suivant :
Java
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}
Kotlin
val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
mapIntent.resolveActivity(packageManager)?.let {
startActivity(mapIntent)
}
Chaînes de requête encodées au format URL
Toutes les chaînes transmises aux intents Google Maps doivent être encodées au format URI. Par exemple,
la chaîne 1st & Pike, Seattle doit devenir 1st%20%26%20Pike%2C%20Seattle.
Les espaces dans la chaîne peuvent être encodés avec %20 ou remplacés par le signe plus (+).
Vous pouvez utiliser la méthode android.net.Uri encode() pour encoder vos chaînes.
Exemple :
Java
Uri gmmIntentUri =
Uri.parse("geo:37.7749,-122.4192?q=" + Uri.encode("1st & Pike, Seattle"));
Kotlin
val gmmIntentUri =
Uri.parse("geo:37.7749,-122.4192?q=" + Uri.encode("1st & Pike, Seattle"))
Afficher une carte
Utilisez l'intent geo: pour afficher une carte à un emplacement et avec un niveau de zoom spécifiés.
geo:latitude,longitude?z=zoom
Paramètres
latitudeetlongitudedéfinissent le point central de la carte.zdéfinit éventuellement le niveau de zoom initial de la carte. Les valeurs acceptées vont de 0 (le monde entier) à 21 (bâtiments individuels). La limite supérieure peut varier en fonction des données cartographiques disponibles à l'emplacement sélectionné.
Exemples
Java
// Creates an Intent that loads a map of San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Kotlin
// Creates an Intent that loads a map of San Francisco
val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
Rechercher un lieu
Utilisez cet intent pour afficher les requêtes de recherche dans une fenêtre d'affichage spécifiée. Lorsque la requête ne renvoie qu'un seul résultat, vous pouvez utiliser cet intent pour afficher un repère à un endroit ou une adresse spécifique, comme un point de repère, une entreprise, un élément géographique ou une ville.
geo:latitude,longitude?q=query
geo:0,0?q=my+street+address
geo:0,0?q=latitude,longitude(label)
Paramètres
En plus des paramètres utilisés pour afficher une carte, la recherche accepte les paramètres suivants :
qdéfinit le ou les lieux à mettre en évidence sur la carte. Le paramètreqest obligatoire pour toutes les requêtes de recherche. Il accepte un lieu sous la forme d'un nom de lieu ou d'une adresse. La chaîne doit être encodée au format URL. Par conséquent, une adresse telle queCity Hall, New York, NYdoit être convertie enCity+Hall,New+York,NY.labelvous permet de définir un libellé personnalisé à un endroit identifié sur la carte. Lelabeldoit être spécifié sous forme de chaîne.
Recherche par catégorie
Si vous transmettez un terme de recherche général, Google Maps tente de trouver un lieu à proximité de la latitude et de la longitude que vous avez spécifiées et qui correspond à vos critères. Si aucun lieu n'est spécifié, Google Maps tente de trouver des fiches à proximité. Exemple :
Java
// Search for restaurants nearby
Uri gmmIntentUri = Uri.parse("geo:0,0?q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
// Search for restaurants in San Francisco.
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Kotlin
// Search for restaurants nearby.
val gmmIntentUri = Uri.parse("geo:0,0?q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
// Search for restaurants in San Francisco.
val gmmIntentUri =
Uri.parse("geo:37.7749,-122.4194?q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
Vous pouvez affiner davantage les résultats de recherche en spécifiant un paramètre de zoom avec la chaîne de requête. Dans l'exemple suivant, l'ajout d'un zoom de 10 tente de trouver des restaurants au niveau de la ville plutôt qu'à proximité.
Java
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Kotlin
val gmmIntentUri =
Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
Recherche de lieu
La recherche d'une adresse spécifique affiche un repère à cet endroit.
Java
Uri gmmIntentUri = Uri.parse("geo:0,0?q=1600 Amphitheatre Parkway, Mountain+View, California");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Kotlin
val gmmIntentUri =
Uri.parse("geo:0,0?q=1600 Amphitheatre Parkway, Mountain+View, California")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
L'exemple précédent définit une latitude et une longitude de 0,0, mais transmet une adresse sous forme de chaîne de requête. Lorsque vous recherchez un lieu spécifique, la latitude et la longitude ne sont pas obligatoires. Toutefois, si vous ne connaissez pas l'adresse exacte, vous pouvez tenter d'affiner les résultats de la recherche en spécifiant une coordonnée. Par exemple, une recherche d'adresse pour "Main Street" peut renvoyer trop de résultats.
Java
// Searching for 'Main Street' returns too many results.
Uri gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street");
Kotlin
// Searching for 'Main Street' returns too many results.
val gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street")
L'ajout d'une latitude et d'une longitude à l'URI de l'intent oriente les résultats vers une zone spécifique :
Java
// Searches for 'Main Street' near San Francisco.
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=101+main+street");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Kotlin
// Searches for 'Main Street' near San Francisco.
val gmmIntentUri =
Uri.parse("geo:37.7749,-122.4194?q=101+main+street")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
Lorsque vous savez que votre recherche renvoie une seule valeur, vous pouvez transmettre un libellé facultatif. Les libellés doivent être spécifiés sous forme de chaîne et s'afficher sous le repère de la carte. Notez que les libellés ne sont disponibles que lorsque q est spécifié comme coordonnée de latitude et de longitude.
Java
// Display a label at the location of Google's Sydney office.
Uri gmmIntentUri = Uri.parse("geo:0,0?q=-33.8666,151.1957(Google+Sydney)");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Kotlin
// Display a label at the location of Google's Sydney office.
val gmmIntentUri =
Uri.parse("geo:0,0?q=-33.8666,151.1957(Google+Sydney)")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
Au lieu d'une adresse postale ou d'une latitude et d'une longitude, vous pouvez afficher un repère à un endroit connu à l'aide d'un plus code.
Java
// Display the location of Google, San Francisco using a global plus code.
Uri gmmIntentUri = Uri.parse("http://plus.codes/849VQJQ5+XX");
// Equivalently, define the same location using a local plus code.
gmmIntentUri = Uri.parse("https://plus.codes/QJQ5+XX,San%20Francisco");
// Construct and use the Intent as in the preceding examples.
Kotlin
// Display the location of Google, San Francisco using a global plus code.
var gmmIntentUri = Uri.parse("http://plus.codes/849VQJQ5+XX")
// Equivalently, define the same location using a local plus code.
gmmIntentUri = Uri.parse("https://plus.codes/QJQ5+XX,San%20Francisco")
// Construct and use the Intent as in the preceding examples.
Lancer la navigation détaillée
Utilisez cet URI d'intent pour lancer la navigation Google Maps avec une navigation détaillée vers l'adresse ou les coordonnées spécifiées. L'itinéraire est toujours fourni à partir de la position actuelle de l'utilisateur.
google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
Paramètres
q: définit le point de terminaison pour les recherches de navigation. Cette valeur peut être des coordonnées de latitude et de longitude ou une adresse au format de requête. S'il s'agit d'une chaîne de requête qui renvoie plusieurs résultats, le premier est sélectionné.modedéfinit le mode de transport.modeest facultatif et peut être défini sur l'une des valeurs suivantes :dpour la voiture (par défaut)bpour le vélolpour le deux-roueswpour la marche
avoiddéfinit les éléments que l'itinéraire doit essayer d'éviter.avoidest facultatif et peut être défini sur une ou plusieurs des valeurs suivantes :tpour les péageshpour les autoroutesfpour les ferries
Exemples
L'Intent suivant demande un itinéraire détaillé vers le zoo de Taronga, à Sydney, en Australie :
Java
Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Kotlin
val gmmIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
Si vous préférez ne pas payer de péage ou prendre un ferry, vous pouvez demander un itinéraire qui tente d'éviter ces éléments.
Java
Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Kotlin
val gmmIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
Si vous préférez faire un peu d'exercice, vous pouvez demander un itinéraire à vélo.
Java
Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&mode=b");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Kotlin
val gmmIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&mode=b")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
Si vous préférez prendre un deux-roues motorisé, vous pouvez demander à ce que l'itinéraire inclue des routes et des chemins étroits non accessibles aux voitures. L'intent suivant renvoie un itinéraire en Inde.
Java
Uri gmmIntentUri = Uri.parse("google.navigation:q=Connaught+Place,+New+Delhi,Delhi&mode=l");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Kotlin
val gmmIntentUri =
Uri.parse("google.navigation:q=Connaught+Place,+New+Delhi,Delhi&mode=l")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
Afficher un panorama Street View
Utilisez l'intent google.streetview pour lancer Google Street View. Google Street
View offre des vues panoramiques à partir d'emplacements spécifiques dans sa zone de couverture
area. Les photos à 360° fournies par les utilisateurs, et les collections spéciales Street View sont également disponibles.
google.streetview:cbll=latitude,longitude&cbp=0,bearing,0,zoom,tilt
google.streetview:panoid=id&cbp=0,bearing,0,zoom,tilt
Paramètres
Tous les URI google.streetview doivent inclure un paramètre cbll ou panoid :
cbllaccepte une latitude et une longitude sous forme de valeurs séparées par une virgule (46.414382,10.013988). L'application affiche le panorama photographié le plus près de cet emplacement. Comme les images Street View sont actualisées régulièrement et que les photos peuvent être prises à des positions légèrement différentes à chaque fois, il est possible que votre emplacement passe à un autre panorama lorsque les images sont mises à jour.panoidest un ID de panorama spécifique. Google Maps utilise l'ID de panorama si unpanoidet uncbllsont spécifiés. Les ID de panorama sont disponibles pour une application Android à partir de l'StreetViewPanoramaLocationobjet.cbpest un paramètre facultatif qui ajuste l'orientation initiale de la caméra. Le paramètrecbpaccepte cinq valeurs séparées par une virgule, qui sont toutes facultatives. Les valeurs les plus importantes sont la deuxième, la quatrième et la cinquième, qui définissent respectivement le cap, le zoom et l'inclinaison. Les première et troisième valeurs ne sont pas compatibles et doivent être définies sur0.bearing: indique le cap de la caméra en degrés dans le sens des aiguilles d'une montre à partir du nord. Le nord géographique est 0, l'est 90, le sud 180 et l'ouest- Les valeurs transmises au cap sont encapsulées. Autrement dit, 0°, 360° et 720° pointent tous dans la même direction. Le cap est défini comme la deuxième des cinq valeurs séparées par une virgule.
zoom: définit le niveau de zoom de la caméra. Le niveau de zoom par défaut est défini sur 0. Un zoom de 1 double le grossissement. Le zoom est limité entre 0 et le niveau de zoom maximal pour le panorama actuel. Cela signifie que toute valeur en dehors de cette plage est définie sur l'extrémité la plus proche qui se trouve dans la plage. Par exemple, une valeur de -1 est définie sur 0. Le zoom est la quatrième des cinq valeurs séparées par une virgule.tilt: spécifie l'angle de la caméra, vers le haut ou vers le bas. Les valeurs sont comprises entre -90 et 0 et entre 0 et 90, avec 90 à la verticale vers le bas, 0 centré sur l'horizon et -90 à la verticale vers le haut.
Exemples
Voici quelques exemples d'utilisation de l'intent Street View.
Java
// Displays an image of the Swiss Alps.
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
// Uses a PanoID to show an image from Maroubra beach in Sydney, Australia.
Uri gmmIntentUri = Uri.parse("google.streetview:panoid=Iaa2JyfIggYAAAQfCZU9KQ");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
// Opens Street View between two Pyramids in Giza. The values passed to the
// cbp parameter angles the camera slightly up, and towards the east.
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=29.9774614,31.1329645&cbp=0,30,0,0,-15");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Kotlin
// Displays an image of the Swiss Alps.
val gmmIntentUri =
Uri.parse("google.streetview:cbll=46.414382,10.013988")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
// Uses a PanoID to show an image from Maroubra beach in Sydney, Australia.
val gmmIntentUri =
Uri.parse("google.streetview:panoid=Iaa2JyfIggYAAAQfCZU9KQ")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)
// Opens Street View between two Pyramids in Giza. The values passed to the
// cbp parameter angles the camera slightly up, and towards the east.
val gmmIntentUri =
Uri.parse("google.streetview:cbll=29.9774614,31.1329645&cbp=0,30,0,0,-15")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)