Die Google Maps App für Android bietet mehrere Intents, mit denen Sie Google Maps im Anzeige-, Such-, Navigations- oder Street View-Modus starten können. Informationen zum Einbetten einer Karte in Ihrer App finden Sie im Startleitfaden zur Google Maps Android API.
Übersicht
Mit Intents können Sie eine Aktivität in einer anderen App starten. Dazu beschreiben Sie eine einfache Aktion, die Sie ausführen möchten, z. B. „Karte anzeigen“ oder „Wegbeschreibung zum Flughafen anzeigen“ in einem Intent
-Objekt. Die Google Maps App für Android unterstützt verschiedene Intents. So können Sie die Google Maps App starten und eine von vier Aktionen ausführen:
- Anzeigen einer Karte für einen angegebenen Standort mit einer bestimmten Zoomstufe
- Suchen und Anzeigen von Orten auf einer Karte
- Anfordern einer Route von einem Ort zu einem anderen. Routen können für drei Mobilitätsformen zurückgegeben werden: mit dem Auto, zu Fuß, mit dem Fahrrad.
- Panoramabilder in Google Street View anzeigen.
Auf dieser Seite werden die Intents beschrieben, die Sie mit der Google Maps App für Android verwenden können. Weitere Informationen zu Intents und Intent-Filtern oder gemeinsamen Intents für die Android-Plattform finden Sie in der Android-Entwicklerdokumentation.
Intent-Anfragen
Damit Sie Google Maps mit einem Intent starten können, müssen Sie zuerst ein Intent
-Objekt erstellen, in dem die Aktion, der URI und das Paket angegeben sind.
- Action: Alle Google Maps-Intents werden als Aufrufaktion aufgerufen –
ACTION_VIEW
. - URI: Google Maps-Intents verwenden URL-Codierung, die eine gewünschte Aktion sowie einige Daten angeben, mit denen die Aktion ausgeführt werden soll.
- Paket: Wenn du
setPackage("com.google.android.apps.maps")
aufrufst, wird vom Intent die Google Maps App für Android verarbeitet. Wenn das Paket nicht festgelegt ist, ermittelt das System, welche Anwendungen dieIntent
verarbeiten können. Wenn mehrere Anwendungen verfügbar sind, wird der Nutzer möglicherweise gefragt, welche Anwendung er verwenden möchte.
Nachdem Sie Intent
erstellt haben, können Sie auf verschiedene Arten anfordern, dass das System die zugehörige Anwendung startet. Eine gängige Methode besteht darin, Intent
an die Methode startActivity()
zu übergeben. Das System startet die erforderliche App – in diesem Fall Google Maps – und startet die entsprechende Activity
.
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)
Wenn das System eine Anwendung nicht identifizieren kann, die auf den Intent reagieren kann, stürzt Ihre Anwendung möglicherweise ab. Aus diesem Grund sollten Sie zuerst prüfen, ob eine empfangende Anwendung installiert ist, bevor Sie einem Nutzer einen dieser Intents präsentieren.
Wenn Sie prüfen möchten, ob eine Anwendung für den Empfang verfügbar ist, rufen Sie resolveActivity()
für Ihr Intent
-Objekt auf. Wenn das Ergebnis nicht null ist, gibt es mindestens eine Anwendung, die den Intent verarbeiten kann, und startActivity()
kann problemlos aufgerufen werden.
Wenn das Ergebnis null
ist, sollten Sie den Intent nicht verwenden und die Funktion, die den Intent aufruft, nach Möglichkeit deaktivieren.
Java
if (mapIntent.resolveActivity(getPackageManager()) != null) { ... }
Kotlin
mapIntent.resolveActivity(packageManager)?.let { ... }
Um eine Karte von San Francisco anzuzeigen, können Sie beispielsweise folgenden Code verwenden.
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) }
URL-codierte Abfragestrings
Alle Zeichenfolgen, die an die Google Maps-Intents weitergegeben werden, müssen URI-codiert werden. Der String „1st & Pike, Seattle“ sollte beispielsweise 1st%20%26%20Pike%2C%20Seattle
lauten.
Leerzeichen in der Zeichenfolge können mit „%20“ codiert oder durch das Pluszeichen (+) ersetzt werden.
Mit der Methode android.net.Uri
parse()
können Sie Ihre Strings codieren.
Beispiel:
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"))
Eine Karte anzeigen
Verwenden Sie den Intent geo:
, um eine Karte an einem bestimmten Standort und mit einer bestimmten Zoomstufe anzuzeigen.
geo:latitude,longitude?z=zoom
Parameter
latitude
undlongitude
legen den Mittelpunkt der Karte fest.z
legt optional die anfängliche Zoomstufe der Karte fest. Die zulässigen Werte reichen von 0 (die ganze Welt) bis 21 (einzelne Gebäude). Das obere Limit kann je nach Kartendaten, die am ausgewählten Standort verfügbar sind, variieren.
Beispiele
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)
Nach einem Ort suchen
Mithilfe dieses Intents können Sie Suchabfragen innerhalb eines bestimmten Viewports anzeigen. Wenn die Abfrage ein einzelnes Ergebnis enthält, können Sie mit diesem Intent eine Markierung an einem bestimmten Ort oder an einer bestimmten Adresse anzeigen lassen, z. B. als Sehenswürdigkeit, Unternehmen, geografisches Merkmal oder Ort.
geo:latitude,longitude?q=query geo:0,0?q=my+street+address geo:0,0?q=latitude,longitude(label)
Parameter
Zusätzlich zu den Parametern, die zum Anzeigen einer Karte verwendet werden, unterstützt die Google Suche die folgenden Parameter:
q
definiert die Orte, die auf der Karte markiert werden sollen. Der Parameterq
ist für alle Suchanfragen erforderlich. Ein Standort wird entweder als Ortsname oder Adresse akzeptiert. Der String muss URL-codiert sein. Eine Adresse wie „City Hall, New York, NY“ sollte also in „City+Hall,New+York,NY“ konvertiert werden.Mit
label
können Sie ein benutzerdefiniertes Label für einen Ort auf der Karte festlegen. Dielabel
muss als String angegeben werden.
Kategoriale Suche
Wenn Sie einen allgemeinen Suchbegriff eingeben, versucht Google Maps, einen Standort in der Nähe des angegebenen Breiten- und Längengrads zu finden. Wenn kein Standort angegeben ist, wird in Google Maps versucht, Einträge in der Nähe zu finden. Beispiel:
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)
Sie können die Suchergebnisse weiter gewichten, indem Sie einen Zoomparameter zusammen mit dem Abfragestring angeben. Im folgenden Beispiel wird beim Hinzufügen eines Zooms von 10 versucht, Restaurants auf Stadtebene und nicht in der Nähe zu finden.
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)
Standortsuche
Bei der Suche nach einer Adresse wird eine Pinnadel an diesem Standort angezeigt.
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)
Im obigen Beispiel wird ein Längengrad/Breitengrad von 0
,0
festgelegt, aber eine Adresse als Abfragestring übergeben. Wenn Sie nach einem bestimmten Standort suchen, sind Längen- und Breitengrad nicht erforderlich. Wenn Sie die genaue Adresse nicht kennen, können Sie versuchen, die Ergebnisse durch eine Koordinate zu beeinflussen. Wenn Sie beispielsweise nach „Hauptstraße“ suchen, werden zu viele Ergebnisse zurückgegeben.
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")
Durch Hinzufügen eines Längen-/Breitengrads zum Intent-URI werden die Ergebnisse auf einen bestimmten Bereich ausgerichtet:
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)
Wenn Sie wissen, dass Ihre Suche einen einzelnen Wert liefert, können Sie ein optionales Label übergeben. Labels müssen als String angegeben und unter der Kartenmarkierung angezeigt werden. Labels sind nur verfügbar, wenn q
als Breiten-/Längengradkoordinaten angegeben ist.
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)
Alternativ zu einer Adresse oder einem Breiten- und Längengrad können Sie eine Markierung an einem bekannten Standort mit einem Plus Code anzeigen lassen.
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
Detaillierte Routenführung starten
Verwenden Sie diesen Intent, um die Google Maps-Navigation mit einer detaillierten Routenführung an die angegebene Adresse oder Koordinate zu starten. Die Route wird immer vom aktuellen Standort des Nutzers aus berechnet.
google.navigation:q=a+street+address google.navigation:q=latitude,longitude
Parameter
q
: Legt den Endpunkt für die Navigation fest. Dieser Wert kann ein Breiten- oder Längengrad oder eine Adresse sein, die in Abfragen formatiert ist. Wenn es sich um einen Abfragestring handelt, der mehr als ein Ergebnis zurückgibt, wird das erste Ergebnis ausgewählt.mode
legt das Verkehrsmittel fest. Der Modus ist optional und kann auf einen der folgenden Werte festgelegt werden:d
für Autofahrten (Standard)b
für Radfahrerl
für Zweiradw
zu Fuß
Mit
avoid
werden Funktionen festgelegt, die die Route vermeiden sollte. „Vermeiden“ ist optional und kann auf einen oder mehrere der folgenden Werte festgelegt werden:t
für Mautgebührenh
für Autobahnenf
für Fähren
Beispiele
Mit dem folgenden Intent
wird die detaillierte Routenführung zum Taronga Zoo in Sydney (Australien) angefordert:
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)
Wenn Sie keine Mautgebühren zahlen oder eine Fähre nutzen möchten, können Sie eine Routenführung beantragen, um solche Verbindungen zu vermeiden.
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)
Wenn Sie sich ein bisschen bewegen möchten, können Sie auch Fahrradrouten anfragen.
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)
Wenn Sie lieber ein motorisiertes Zweirad fahren möchten, können Sie anfordern, dass die Routen schmale Straßen und Wege enthalten, die für Autos nicht verfügbar sind. Die folgende intent
gibt eine Route in Indien zurück.
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)
Street View-Panorama aufrufen
Verwenden Sie den Intent google.streetview
, um Google Street View zu starten. Google Street View bietet im gesamten Abdeckungsbereich Panoramen von bestimmten Orten.
Außerdem sind von Nutzern bereitgestellte 360°-Panoramaaufnahmen und besondere Street View-Sammlungen verfügbar.
google.streetview:cbll=latitude,longitude&cbp=0,bearing,0,zoom,tilt google.streetview:panoid=id&cbp=0,bearing,0,zoom,tilt
Parameter
Alle google.streetview
-URIs müssen entweder einen cbll
- oder einen panoid
-Parameter enthalten.
cbll
akzeptiert Breiten- und Längengrade als durch Kommas getrennte Werte (46.414382,10.013988
). In der App wird das Panorama angezeigt, das dem nächstgelegenen Standort am nächsten ist. Da die Street View-Bilder regelmäßig aktualisiert werden und die Fotos jedes Mal an leicht unterschiedlichen Positionen aufgenommen werden, kann es passieren, dass Ihr Standort bei einer Aktualisierung der Bilder an ein anderes Panorama ausgerichtet wird.panoid
ist eine spezifische Panorama-ID. In Google Maps wird die Panorama-ID verwendet, wenn sowohlpanoid
als auchcbll
angegeben sind. Panorama-IDs sind für eine Android-App über dasStreetViewPanoramaLocation
-Objekt verfügbar.cbp
ist ein optionaler Parameter, der die anfängliche Ausrichtung der Kamera anpasst. Der Parametercbp
verwendet fünf durch Kommas getrennte Werte, die alle optional sind. Die wichtigsten Werte sind der zweite, vierte und fünfte Wert, mit dem Peilung, Zoom bzw. Neigung festgelegt werden. Der erste und dritte Wert werden nicht unterstützt und sollten auf0
gesetzt werden.bearing
: Gibt die Kompassausrichtung der Kamera in Grad im Uhrzeigersinn von Norden an. Der geografische Norden ist 0, Osten 90, Süden 180 und Westen 270. Die Werte, die an die Peilung übergeben werden, werden umbrochen, d. h., 0°, 360° und 720° zeigen alle in dieselbe Richtung. Die Lage ist der zweite von fünf kommagetrennten Werten.zoom
: Hiermit wird die Zoomstufe der Kamera festgelegt. Die Standard-Zoomstufe ist 0. Ein Zoom von 1 würde die Vergrößerung verdoppeln. Der Zoom liegt zwischen 0 und der maximalen Zoomstufe des aktuellen Panoramas. Dies bedeutet, dass jeder Wert außerhalb dieses Bereichs auf das nächstgelegene Extremwert gesetzt wird, das innerhalb des Bereichs liegt. Ein Wert von -1 wird beispielsweise auf 0 gesetzt. Zoom ist der vierte von fünf kommagetrennten Werten.tilt
: Gibt den Neigungswinkel der Kamera an (nach oben oder nach unten). Der Bereich reicht von -90 bis 0 bis 90, wobei 90 gerade nach unten, 0 zentriert am Horizont und -90 senkrecht nach oben zeigt.
Beispiele
Nachfolgend sind einige Beispiele für die Verwendung des Street View-Intents aufgeführt.
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)