L'app Google Maps per Android espone diversi intent che puoi utilizzare per avviare Google Maps nelle modalità di visualizzazione, ricerca, navigazione o Street View. Per incorporare una mappa nella tua app, consulta la guida rapida di Maps SDK for Android.
Per le piattaforme Android Automotive OS (AAOS), sono disponibili considerazioni specifiche e intent aggiuntivi. Per ulteriori dettagli, consulta la documentazione relativa agli intent di Google Maps per Android Automotive.
Panoramica
Gli intent ti consentono di avviare un'attività in un'altra app descrivendo un'azione che vuoi eseguire (ad esempio "mostra una mappa" o "mostra le indicazioni stradali per l'aeroporto") in un oggetto Intent
. L'app Google Maps per Android supporta diversi intent,che ti consentono di avviare l'app Google Maps ed eseguire una delle quattro azioni seguenti:
- Visualizza una mappa in una posizione e con un livello di zoom specificati.
- Cercare località o luoghi e visualizzarli su una mappa.
- Richiedi indicazioni stradali da un luogo all'altro. È possibile restituire indicazioni stradali per tre modalità di trasporto: auto, a piedi e in bicicletta.
- Visualizzare le immagini panoramiche in Google Street View.
Questa pagina descrive gli intent che puoi utilizzare con l'app Google Maps per Android. Per ulteriori informazioni sulle intenzioni, consulta Intentioni e filtri di intenti e Intentioni comuni.
Richieste di intent
Per avviare Google Maps con un'intenzione, devi prima creare un oggetto Intent
specificandone l'azione, l'URI e il pacchetto.
- Azione: tutti gli intent di Google Maps vengono chiamati come azione di visualizzazione
ACTION_VIEW
. - URI: gli intent di Google Maps utilizzano URI codificati in URL che specificano un'azione selezionata, insieme ad alcuni dati con cui eseguire l'azione.
Pacchetto: la chiamata a
setPackage("com.google.android.apps.maps")
garantisce che l'app Google Maps per Android gestisca l'intent. Se il pacchetto non è impostato, il sistema determina quali app possono gestireIntent
. Se sono disponibili più app, all'utente potrebbe essere chiesto quale vuole utilizzare.
Dopo aver creato il Intent
, puoi richiedere al sistema di avviare l'app correlata in diversi modi. Un metodo comune è passare Intent
al metodo
startActivity()
. Il sistema avvia l'app necessaria, in questo caso Google Maps, e avvia Activity
corrispondente.
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)
Se il sistema non riesce a identificare un'app in grado di rispondere all'intent, la tua app potrebbe bloccarsi. Per questo motivo, prima di presentare uno di questi intent a un utente, verifica che sia installata un'applicazione di ricezione.
Per verificare che un'app sia disponibile per ricevere l'intent, chiama
resolveActivity()
sull'oggetto Intent
. Se il risultato è diverso da null, esiste almeno un'app che può gestire l'intent ed è possibile chiamare startActivity()
. Se il risultato è null
, non utilizzare l'intent e, se possibile, disabilita la funzionalità che lo richiama.
Java
if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}
Kotlin
mapIntent.resolveActivity(packageManager)?.let {
...
}
Ad esempio, per visualizzare una mappa di San Francisco, puoi utilizzare il seguente codice:
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)
}
Stringhe di query con codifica URL
Tutte le stringhe passate agli intent di Google Maps devono essere codificate per l'URL. Ad esempio,
la stringa 1st & Pike, Seattle
deve diventare 1st%20%26%20Pike%2C%20Seattle
.
Gli spazi nella stringa possono essere codificati con %20
o sostituiti con il segno più
(+
).
Puoi utilizzare il metodo android.net.Uri
parse()
per codificare le stringhe.
Ad esempio:
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"))
Visualizzare una mappa
Utilizza l'intent geo:
per visualizzare una mappa in una posizione e con un livello di zoom specificati.
geo:latitude,longitude?z=zoom
Parametri
latitude
elongitude
impostano il punto centrale della mappa.z
imposta facoltativamente il livello di zoom iniziale della mappa. I valori accettati vanno da 0 (tutto il mondo) a 21 (singoli edifici). Il limite superiore può variare in base ai dati della mappa disponibili nella località selezionata.
Esempi
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)
Cerca una località
Utilizza questa intenzione per visualizzare le query di ricerca in un viewport specificato. Quando la query ha un solo risultato, puoi utilizzare questa intenzione per mostrare un segnaposto in un determinato luogo o indirizzo, ad esempio un punto di riferimento, un'attività, un elemento geografico o una città.
geo:latitude,longitude?q=query
geo:0,0?q=my+street+address
geo:0,0?q=latitude,longitude(label)
Parametri
Oltre ai parametri utilizzati per visualizzare una mappa, la Ricerca supporta i seguenti parametri:
q
definisce i luoghi da evidenziare sulla mappa. Il parametroq
è obbligatorio per tutte le richieste di ricerca. Accetta una località come nome o indirizzo di un luogo. La stringa deve essere codificata come URL, pertanto un indirizzo comeCity Hall, New York, NY
deve essere convertito inCity+Hall,New+York,NY
.label
ti consente di impostare un'etichetta personalizzata in un luogo identificato sulla mappa.label
deve essere specificato come stringa.
Ricerca categorica
Se passi un termine di ricerca generico, Google Maps tenta di trovare una località vicino alla latitudine e alla longitudine specificate che corrispondono ai tuoi criteri. Se non viene specificata alcuna località, Google Maps tenta di trovare schede nelle vicinanze. Ad esempio:
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)

Puoi influenzare ulteriormente i risultati di ricerca specificando un parametro di zoom insieme alla stringa di query. Nell'esempio seguente, l'aggiunta di uno zoom di 10 tenta di trovare ristoranti a livello di città anziché nelle vicinanze.
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)
Ricerca località
La ricerca di un indirizzo specifico mostra un segnaposto nella relativa posizione.
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'esempio precedente imposta una latitudine e una longitudine di 0
,0
, ma passa un indirizzo come stringa di query. Quando cerchi una località specifica, la latitudine
e la longitudine non sono necessarie. Tuttavia, se non conosci l'indirizzo esatto, puoi tentare di influenzare i risultati della ricerca specificando una coordinata. Ad esempio, eseguire una ricerca di indirizzi per "Via Principale" potrebbe restituire troppi risultati.
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'aggiunta di latitudine e longitudine all'URI intent orienta i risultati verso una determinata area:
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)
Quando sai che la ricerca restituisce un singolo valore, ti consigliamo di passare un'etichetta facoltativa. Le etichette devono essere specificate come stringa e visualizzate sotto il segnaposto della mappa. Tieni presente che le etichette sono disponibili solo quando q
è specificato come
coordinate di latitudine e longitudine.
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)
In alternativa a un indirizzo o a latitudine e longitudine, puoi visualizzare un segnaposto in una posizione nota utilizzando 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.
Avvia la navigazione passo passo
Utilizza questo URI intent per avviare la navigazione di Google Maps con indicazioni stradali passo passo per l'indirizzo o le coordinate specificati. Le indicazioni stradali vengono sempre fornite dalla posizione corrente dell'utente.
google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
Parametri
q
: imposta l'endpoint per le ricerche di navigazione. Questo valore può essere costituito da coordinate di latitudine e longitudine o da un indirizzo in formato query. Se si tratta di una stringa di query che restituisce più risultati, viene selezionato il primo.mode
imposta il metodo di trasporto.mode
è facoltativo e può essere impostato su uno dei seguenti valori:d
per la guida (impostazione predefinita)b
per biciclettal
per motocicliw
per camminare
avoid
imposta gli elementi che il percorso deve cercare di evitare.avoid
è facoltativo e può essere impostato su uno o più dei seguenti valori:t
per i pedaggih
per le autostradef
per i traghetti
Esempi
Il seguente Intent
richiede la navigazione passo passo per raggiungere lo zoo Taronga a Sydney, in Australia:
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)

Se preferisci non pagare pedaggi o non prendere un traghetto, puoi richiedere un itinerario che tenta di evitare queste strutture.
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)
Se preferisci fare un po' di esercizio fisico, puoi richiedere indicazioni per andare in bicicletta.
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)
Se preferisci utilizzare un veicolo a due ruote a motore, puoi richiedere che le indicazioni includano strade strette e sentieri non disponibili per le auto. Il seguente
intent
restituisce un itinerario in India.
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)
Visualizzare una panoramica di Street View
Utilizza l'intent google.streetview
per avviare Google Street View. Google Street
View fornisce viste panoramiche da posizioni designate nell'intera area di copertura. Sono disponibili anche le Photosphere inviate dagli utenti e le collezioni speciali di Street View.
google.streetview:cbll=latitude,longitude&cbp=0,bearing,0,zoom,tilt
google.streetview:panoid=id&cbp=0,bearing,0,zoom,tilt
Parametri
Tutti gli URI google.streetview
devono includere un parametro cbll
o panoid
:
cbll
accetta una latitudine e una longitudine come valori separati da virgola (46.414382,10.013988
). L'app mostra il panorama fotografato più vicino a questa località. Poiché le immagini di Street View vengono aggiornate periodicamente e le foto potrebbero essere scattate da posizioni leggermente diverse ogni volta, è possibile che la tua posizione venga associata a un panorama diverso quando le immagini vengono aggiornate.panoid
è un ID panorama specifico. Google Maps utilizza l'ID panorama se vengono specificati siapanoid
siacbll
. Gli ID panorama sono disponibili per un'app Android dall'oggettoStreetViewPanoramaLocation
.cbp
è un parametro facoltativo che regola l'orientamento iniziale della videocamera. Il parametrocbp
accetta 5 valori separati da virgole, tutti facoltativi. I valori più significativi sono il secondo, il quarto e il quinto, che impostano rispettivamente l'orientamento, lo zoom e l'inclinazione. I valori primo e terzo non sono supportati e devono essere impostati su0
.bearing
: indica l'orientamento della fotocamera in gradi in senso orario da nord. Il nord vero è 0, l'est è 90, il sud è 180 e l'ovest è- Valori passati alle maniglie di orientamento, ovvero 0°, 360° e 720°, tutti in direzione uguale. L'azimut è definito come il secondo di cinque valori separati da virgole.
zoom
: imposta il livello di zoom della videocamera. Il livello di zoom predefinito è impostato su 0. Uno zoom di 1 raddoppierebbe l'ingrandimento. Lo zoom è bloccato tra 0 e il livello di zoom massimo per il panorama corrente. Ciò significa che qualsiasi valore che non rientra in questo intervallo viene impostato sul valore estremo più vicino che rientra nell'intervallo. Ad esempio, un valore di -1 viene impostato su 0. Lo zoom è il quarto di cinque valori separati da virgole.tilt
: specifica l'angolazione, verso l'alto o verso il basso, della fotocamera. L'intervallo va da -90 a 0 a 90, con 90 che indica che la fotocamera è rivolta verso il basso, 0 al centro dell'orizzonte e -90 che indica che la fotocamera è rivolta verso l'alto.
Esempi
Di seguito sono riportati alcuni esempi di utilizzo dell'intenzione di 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)
