La Application Google Maps pour Android présente plusieurs intents que vous pouvez utiliser pour lancer Google Maps en mode display, recherche, navigation ou Street View. Si vous souhaitez intégrer une carte à votre application, reportez-vous à l'API Google Maps pour Android Guide de démarrage
Présentation
Les intents vous permettent de démarrer une activité dans une autre appli en décrivant une simple action
que vous souhaitez effectuer (par exemple, "afficher une carte" ou "montrer l'itinéraire à
aéroport") dans un
Intent
. La
Application Google Maps pour Android
est compatible avec différents intents, ce qui vous permet de lancer l'application Google Maps
et effectuez l'une des quatre actions suivantes:
- afficher une carte à un point géographique et à un niveau de zoom donnés ;
- Recherchez des lieux ou des lieux, et affichez-les sur une carte.
- Demander un itinéraire d'un lieu à un autre Les itinéraires peuvent être renvoyés pour trois modes de transport: la voiture, la marche et le vélo.
- Affichez 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 Filtres ou Intents communs à Android plate-forme, consultez la documentation destinée aux développeurs Android.
Requêtes d'intent
Pour lancer Google Maps avec un intent, vous devez d'abord créer un
Intent
en spécifiant son action, son URI et son package.
- Action: tous les intents Google Maps sont appelés en tant qu'action "View" (Vue),
ACTION_VIEW
- URI: les intents Google Maps utilisent une URL encodée qui spécifie l'URL action, ainsi que certaines données avec lesquelles effectuer l'action.
- Package: appeler
setPackage("com.google.android.apps.maps")
permet s'assurer que l'application Google Maps pour Android gère l'intent. Si le package n'est pas défini, le système détermine quelles applications peuvent gérerIntent
Si plusieurs applications sont disponibles, l'utilisateur peut être invité à indiquer laquelle qu'ils souhaitent utiliser.
Après avoir créé l'Intent
, vous pouvez demander au système de lancer l'objet associé
application de plusieurs façons. Une méthode courante consiste à transmettre Intent
à la
startActivity()
. Le système lance l'application nécessaire. Dans ce cas,
Google Maps) et lancez
Activity
correspondant
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 risque de planter. C'est pourquoi vous devez d'abord vérifier qu'une règle de réception est installée avant de présenter l'un de ces intents à un utilisateur.
Pour vérifier qu'une application peut recevoir l'intent, appelez
resolveActivity()
sur votre
Intent
. Si le résultat n'est pas nul, au moins une application peut gérer
et vous pouvez appeler sans risque
startActivity()
Si le résultat est null
, vous ne devez pas utiliser l'intent et, si possible,
doit désactiver la fonctionnalité
qui appelle l'intent.
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 intentions Google Maps doivent être encodées sous forme d'URI. Par exemple,
la chaîne "1st & Pike, Seattle" doit être définie sur 1st%20%26%20Pike%2C%20Seattle
.
Dans la chaîne, les espaces peuvent être encodés avec %20 ou remplacés par le signe plus (+).
Vous pouvez utiliser la méthode parse()
android.net.Uri
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 point géographique et à un niveau de zoom spécifiques.
geo:latitude,longitude?z=zoom
Paramètres
latitude
etlongitude
définissent le point central de la carte.z
définit éventuellement le niveau de zoom initial de la carte. Plage de valeurs acceptées de 0 (le monde entier) à 21 (bâtiments individuels). La limite supérieure peut varient en fonction des données cartographiques disponibles pour le lieu sélectionné.
Exemples
Java
// Creates an Intent that will load 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 will load 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)
Recherche d'un lieu
Utilisez cette intention pour afficher des requêtes de recherche au sein de la fenêtre d'affichage spécifiée. Lorsque a un seul résultat, vous pouvez utiliser cet intent pour afficher un repère un lieu 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 Google prend en charge les les paramètres suivants:
q
définit le ou les lieux à mettre en évidence sur la carte. Le paramètreq
est obligatoire pour toutes les requêtes de recherche. Il accepte un établissement comme lieu son nom ou son adresse. La chaîne doit être encodée au format URL. Par exemple, une adresse telle que "City Hall, New York, NY" doit être converti en City+Hall,New+York,NY.label
vous permet de définir un libellé personnalisé pour un lieu identifié sur la carte. Lalabel
doit être spécifié en tant que chaîne.
Recherche par catégorie
Si vous saisissez un terme de recherche générique, Google Maps tente de trouver un lieu. près de la latitude/longitude que vous avez spécifiée et correspondant à vos critères. Si aucun lieu n'est est spécifiée, 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 la recherche en spécifiant un paramètre de zoom avec la chaîne de requête. Dans l'exemple ci-dessous, ajouter un zoom de 10 tentera pour 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 sur ce lieu.
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 ci-dessus définit une latitude/longitude de 0
,0
, mais transmet une adresse en tant que requête
. Lorsque vous recherchez un lieu très précis, la latitude et la longitude
ne sont pas obligatoires. Toutefois, si vous ne connaissez pas l'adresse exacte, vous pouvez
essayer de fausser les résultats de la recherche en spécifiant une coordonnée ; Pour
Exemple : recherche d'adresse sur "rue du village" renvoie un nombre trop élevé
résultats.
Java
// Searching for 'Main Street' will return too many results Uri gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street");
Kotlin
// Searching for 'Main Street' will return too many results val gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street")
L'ajout d'une latitude/longitude à l'URI de l'intent oriente les résultats vers une valeur domaine:
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)
Si vous savez que votre recherche ne renverra qu'une seule valeur, vous pouvez transmettre un
libellé facultatif. Les étiquettes doivent être spécifiées sous forme de chaîne et apparaîtront sous
sur la carte. Notez que les libellés ne sont disponibles que lorsque q
est spécifié en tant que
de latitude/longitude.
Java
// Display a label at the location of Google's Sydney office Uri gmmIntentUri = Uri.parse("geo:0,0?q=Google+Sydney@-33.8666,151.1957"); 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/longitude, vous pouvez afficher un repère à un emplacement connu à l'aide d'une 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 examples above
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 examples above
Lancement de la navigation détaillée
Utiliser cet intent pour lancer la navigation Google Maps avec des instructions de navigation détaillées à l'adresse ou aux coordonnées spécifiées. Les instructions sont toujours fournies par l'emplacement actuel de l'utilisateur.
google.navigation:q=a+street+address google.navigation:q=latitude,longitude
Paramètres
q
: définit le point d'arrivée des recherches de navigation. Cette valeur peut être des coordonnées géographiques (latitude et longitude) ou une adresse au format de requête. S'il s'agit d'une requête chaîne qui renvoie plusieurs résultats, le premier résultat est sélectionnée.mode
définit le mode de transport. est facultatif et peut être défini sur au choix:d
pour la conduite (par défaut)b
à vélol
pour deux-rouesw
à pied
avoid
définit les éléments géographiques que l'itinéraire doit essayer d'éviter. À éviter est facultatif et peut être défini sur une ou plusieurs des valeurs suivantes:t
pour les péagesh
pour les autoroutesf
pour les ferries
Exemples
Le Intent
ci-dessous demandera une navigation détaillée vers le zoo de Taronga, dans
Sydney, 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éages ni prendre le ferry, vous pouvez demander un itinéraire qui essaie d'éviter ces choses.
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 vous entraîner un peu, 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és, vous pouvez demander que l'itinéraire
inclure les routes étroites et les sentiers inaccessibles aux voitures. La valeur intent
ci-dessous renvoie
une route 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)
Affichage d'un panorama Street View
Utilisez l'intent google.streetview
pour lancer Google Street View. Google Street View
offre des vues panoramiques à partir d'emplacements désignés sur l'ensemble de
zone de couverture.
Photo-sphères ajoutées par les utilisateurs
et
Collections spéciales Street View
sont également à disposition.
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 élément cbll
ou panoid
.
.
cbll
accepte 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é. la plus proche de ce lieu. Comme les images Street View sont régulièrement sont actualisées, et les photos peuvent être prises depuis des positions légèrement différentes. à chaque fois, il est possible que votre position corresponde à panorama lorsque les images sont mises à jour.panoid
est un identifiant de panorama spécifique. Google Maps utilise l'identifiant de panorama sipanoid
etcbll
sont tous les deux spécifiés. Les identifiants de panorama sont disponibles pour Application Android du objetStreetViewPanoramaLocation
.cbp
est un paramètre facultatif qui ajuste l'orientation initiale de la caméra. Le paramètrecbp
accepte cinq valeurs séparées par une virgule. Toutes ces valeurs sont acceptées : sont facultatifs. Les valeurs les plus significatives sont les deuxième, quatrième et cinquième qui définissent respectivement l'orientation, le zoom et l'inclinaison. La première et la troisième ne sont pas acceptées et doivent être définies sur0
.bearing
: indique la direction de la boussole de la caméra en degrés dans le sens des aiguilles d'une montre du nord. Le nord géographique est à 0, l'est à 90, le sud à 180 et l'ouest à 270. Valeurs transmis à Bearing Awards va encapsuler ; c'est-à-dire à 0°, 360° et 720° vont dans la même direction. L'orientation est la deuxième d'une série de cinq des 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 à 0. Un zoom de 1 doublerait le grossissement. Le zoom est limité entre 0 et le niveau de zoom maximal pour le panorama actuel. Cela signifie que toute valeur située en dehors de cette plage sera définie sur l'extrême la plus proche se trouvant dans la plage. Par exemple, une valeur de -1 est défini sur 0. Le zoom est la quatrième des cinq valeurs séparées par une virgule.tilt
: spécifie l'angle, vers le haut ou vers le bas, de la caméra. La plage est -90 de 0 à 90, avec 90 à la verticale vers le bas, 0 centré sur l'horizon, et -90 en regardant droit vers le haut.
Exemples
Vous trouverez ci-dessous quelques exemples d'utilisation de l'intention 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 will angle 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 will angle 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)