Google Maps Intents für Android

Die Google Maps App für Android enthält mehrere Intents, mit denen Sie Google Maps Such-, Navigations- oder Street View-Modus. Wenn Sie Karten in Ihre App einbetten, finden Sie in der Google Maps Android API Startleitfaden.

Übersicht

Mit Intents kannst du eine Aktivität in einer anderen App starten, indem du eine einfache Aktion beschreibst die Sie ausführen möchten (z. B. "Karte anzeigen" oder "Wegbeschreibung anzeigen Flughafen") in einem Intent -Objekt enthält. Die Google Maps App für Android unterstützt verschiedene Intents, sodass Sie die Google Maps App starten können. und führen Sie eine von vier Aktionen aus:

  1. Anzeigen einer Karte für einen angegebenen Standort mit einer bestimmten Zoomstufe
  2. Suchen und Anzeigen von Orten auf einer Karte
  3. Anfordern einer Route von einem Ort zu einem anderen. Routen können zurückgegeben werden für drei Verkehrsmittel: Auto, zu Fuß oder mit dem Fahrrad.
  4. Panoramabilder in Google Street View anzeigen

Auf dieser Seite werden die Intents beschrieben, die Sie mit der Google Maps App für Android Weitere Informationen zu Intents und Intents Filter oder für Android gängige Intents finden Sie in der Dokumentation für Android-Entwickler.

Intent-Anfragen

Um Google Maps mit einem Intent zu starten, musst du zuerst ein Intent -Objekt und gibt seine Aktion, seinen URI und sein Paket an.

  • Aktion: Alle Google Maps-Intents werden als Aktion zum Ansehen bezeichnet. ACTION_VIEW
  • URI: In Google Maps-Intents wird URL-codiert verwendet, um ein gewünschtes Objekt anzugeben. Aktion zusammen mit einigen Daten an, mit denen die Aktion ausgeführt werden soll.
  • Paket: Wenn Sie setPackage("com.google.android.apps.maps") anrufen, geschieht Folgendes: muss die Google Maps App für Android den Intent verarbeiten. Wenn die nicht festgelegt ist, ermittelt das System, welche Apps Intent Wenn mehrere Apps verfügbar sind, wird der Nutzer möglicherweise gefragt, welche App die sie verwenden möchten.

Nach dem Erstellen der Intent können Sie anfordern, dass das System die zugehörige in vielerlei Hinsicht nutzen. Eine gängige Methode besteht darin, Intent an den startActivity() . Das System startet die erforderliche App – in diesem Fall Google Google Maps und 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 App, die auf den Intent reagieren kann, nicht identifizieren kann, kann abstürzen. Aus diesem Grund sollten Sie zunächst überprüfen, wird installiert, bevor Sie einem Nutzer einen dieser Intents präsentieren.

Rufen Sie auf, um zu prüfen, ob eine App für den Empfang des Intents verfügbar ist. resolveActivity() auf Ihrem Intent -Objekt enthält. Wenn das Ergebnis nicht null ist, gibt es mindestens eine Anwendung, die den Sie können in jedem Fall startActivity() Wenn das Ergebnis null lautet, sollten Sie den Intent nicht verwenden. Sie sollte die Funktion deaktivieren, die den Intent aufruft.

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. Beispiel: die Zeichenfolge „1st & Pike, Seattle“ sollte 1st%20%26%20Pike%2C%20Seattle werden. Leerzeichen in der Zeichenfolge können mit „%20“ codiert oder durch das Pluszeichen (+) ersetzt werden.

Sie können die Methode android.net.Uri parse() verwenden, um Ihre Strings zu 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

  • Mit latitude und longitude wird der Mittelpunkt der Karte festgelegt.
  • Mit z kann optional die anfängliche Zoomstufe der Karte festgelegt werden. Bereich der zulässigen Werte von 0 (die ganze Welt) bis 21 (einzelne Gebäude). Der obere Grenzwert kann variieren je nach den für den ausgewählten Standort verfügbaren Kartendaten.

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 der Parameter Abfrage nur ein Ergebnis liefert, können Sie mit diesem Intent an einer bestimmten Stelle einem bestimmten Ort oder einer bestimmten Adresse, etwa eine Sehenswürdigkeit, ein Unternehmen, ein geografisches Element, oder der Stadt.

geo:latitude,longitude?q=query
geo:0,0?q=my+street+address
geo:0,0?q=latitude,longitude(label)

Parameter

Neben den Parametern, die zum Anzeigen einer Karte verwendet werden, unterstützt die Google Suche auch die folgende Parameter:

  • q definiert den oder die Orte, die auf der Karte markiert werden sollen. Der Parameter q ist ist für alle Suchanfragen erforderlich. Ein Standort kann entweder als Ort Name oder Adresse. Der String muss URL-codiert sein. also eine Adresse wie „City Hall, New York, NY“, in eine andere Sprache City+Hall,New+York,NY.

  • Mit label können Sie für einen auf der Karte identifizierten Ort ein benutzerdefiniertes Label festlegen. Die label muss als String angegeben werden.

Wenn Sie einen allgemeinen Suchbegriff übergeben, versucht Google Maps, einen Standort zu finden in der Nähe der von Ihnen angegebenen Breiten- und Längengrade befinden, die Ihren Kriterien entsprechen. Wenn kein Standort vorhanden ist: versucht Google Maps, nach Einträgen in der Nähe zu suchen. 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)

Nach Restaurants in San Francisco suchen

Sie können die Suchergebnisse weiter gewichten, indem Sie einen Zoomparameter entlang der durch den Abfragestring. Im Beispiel unten wird durch Hinzufügen eines Zooms von 10 versucht, um 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)

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 Breiten-/Längengrad von 0,0 festgelegt, aber eine Adresse wird als Abfrage übergeben. . Bei der Suche nach einem ganz bestimmten Ort werden Breiten- und Längengrad sind nicht erforderlich. Wenn Sie die genaue Adresse nicht kennen, können Sie versuchen, die Ergebnisse der Suche durch Angabe einer Koordinate zu beeinflussen. Für einer Adresssuche nach "Hauptstraße". werden zu viele Ergebnisse.

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 lat/lng-Werts zum Intent-URI werden die Ergebnisse zugunsten einer bestimmten Gebiet:

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 zurückgibt, können Sie optionales Label. Labels müssen als String angegeben werden und werden unter der Kartenmarkierung. Beachten Sie, dass Labels nur verfügbar sind, wenn q als Breiten- und Längengrad-Koordinaten

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)

Als Alternative zu einer Adresse oder einem Breiten-/Längengrad können Sie eine Markierung an einem bekannten Standort mithilfe eines 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

Detaillierte Routenführung wird gestartet

Mit diesem Intent die Google Maps-Navigation mit detaillierter Routenführung starten mit der angegebenen Adresse oder Koordinate. Die Routen werden immer aus der dem aktuellen Standort des Nutzers.

google.navigation:q=a+street+address
google.navigation:q=latitude,longitude

Parameter

  • q: Legt den Endpunkt für Navigationssuchen fest. Dieser Wert kann Längen- und Breitengradkoordinaten oder eine Adresse in Abfrageformat. Wenn es sich um eine Abfrage handelt die mehr als ein Ergebnis zurückgibt, ist das erste Ergebnis ausgewählt.

  • mode legt das Verkehrsmittel fest. Der Modus ist optional und kann folgendermaßen festgelegt werden: eine der folgenden Optionen:

    • d für Fahrten mit dem Auto (Standardeinstellung)
    • b mit dem Fahrrad
    • l für Motorrad
    • w zu Fuß
  • avoid legt Elemente fest, die die Route vermeiden sollte. „Vermeiden“ ist optional und kann auf einen oder mehrere der folgenden Werte festgelegt werden:

    • t für Mautstraßen
    • h für Autobahnen
    • f für Fähren

Beispiele

Die folgende Intent fordert die detaillierte Routenführung zum Taronga Zoo an, in Sydney (Australien):

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)

Route zum Taronga Zoo

Wenn Sie lieber keine Mautgebühren zahlen oder keine Fähre fahren möchten, können Sie eine Route anfordern, diese Dinge 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 etwas bewegen möchten, können Sie stattdessen eine Fahrradroute anfordern.

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 mit einem motorisierten Motorrad fahren möchten, können Sie enge Straßen und Wege, die für Autos nicht zugänglich sind. Die folgende intent gibt Folgendes zurück: eine Route in Indien.

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 anzeigen

Verwenden Sie den Intent google.streetview, um Google Street View zu starten. Google Street View bietet Panoramaansichten von bestimmten Orten in der gesamten Abdeckung. 360°-Fotos von Nutzern und Ausgewählte Street View-Sammlungen sind ebenfalls 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 cbll oder panoid enthalten .

  • cbll akzeptiert einen Breiten- und Längengrad als kommagetrennte Werte (46.414382,10.013988). In der App wird das Panorama angezeigt, die diesem Standort am nächsten sind. Da Street View-Bilder regelmäßig aktualisiert. Fotos können an leicht anderen Positionen aufgenommen werden. kann es vorkommen, dass dein Standort wenn das Bild aktualisiert wird.

  • panoid ist eine spezifische Panorama-ID. Google Maps verwendet die Panorama-ID, wenn sowohl ein panoid als auch ein cbll angegeben sind. Panorama-IDs stehen einem Android-App aus der StreetViewPanoramaLocation-Objekt.

  • cbp ist ein optionaler Parameter, mit dem die anfängliche Ausrichtung des Kamera. Für den Parameter cbp sind fünf kommagetrennte Werte erforderlich, die alle sind optional. Die wichtigsten Werte sind der zweite, vierte und fünfte mit der Ausrichtung, Zoom und Neigung festgelegt werden. Im ersten und dritten -Werte werden nicht unterstützt und sollten auf 0 festgelegt werden.

    • bearing: gibt die Kompassrichtung der Kamera in Grad im Uhrzeigersinn an aus Norden. Der geografische Norden ist 0, Osten 90, Süden 180 und Westen 270. Werte an die Lagerung übergeben wird, also 0°, 360° und 720° in die gleiche Richtung zeigen. Die Lage ist definiert als die Sekunde von fünf kommagetrennte Werte.
    • zoom: Hiermit wird die Zoomstufe der Kamera festgelegt. Die Standard-Zoomstufe ist bei 0. Ein Zoom von 1 würde die Vergrößerung verdoppeln. Der Zoom ist fixiert zwischen 0 und der maximalen Zoomstufe für das aktuelle Panorama liegt. Das bedeutet, dass für jeden Wert, der außerhalb dieses Bereichs liegt, der Wert dem Extremwert, der in den Bereich fällt. Beispiel: Der Wert -1 wird auf 0 festgelegt. Zoom ist der vierte von fünf durch Kommas getrennten Werten.
    • tilt: gibt den Winkel der Kamera nach oben oder unten an. Der Bereich ist -90 0 bis 90, wobei 90 senkrecht nach unten blickt, 0 am Horizont zentriert, und -90 senkrecht nach oben schauen.

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)

Pyramiden in Street View