Meine App muss Google Maps-Anweisungen von A nach B anzeigen, aber ich möchte Google Maps nicht in meine Anwendung einfügen, sondern sie mit einer Absicht starten. Ist das möglich? Wenn ja, wie?
java
android
google-maps
android-intent
Lars D.
quelle
quelle
Antworten:
Sie könnten so etwas verwenden:
Entfernen Sie den
saddr
Parameter und den Wert , um die Navigation vom aktuellen Standort aus zu starten .Sie können anstelle von Breiten- und Längengrad eine tatsächliche Adresse verwenden. Dies gibt dem Benutzer jedoch einen Dialog, in dem er zwischen dem Öffnen über einen Browser oder Google Maps wählen kann.
Dadurch wird Google Maps direkt im Navigationsmodus gestartet:
AKTUALISIEREN
Im Mai 2017 hat Google die neue API für universelle, plattformübergreifende Google Maps-URLs veröffentlicht:
https://developers.google.com/maps/documentation/urls/guide
Sie können Intents auch mit der neuen API verwenden.
quelle
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
Dies ist ein wenig abseits des Themas, da Sie nach "Anweisungen" gefragt haben. Sie können jedoch auch das in der Android-Dokumentation beschriebene Geo-URI-Schema verwenden:
http://developer.android.com/guide/appendix/g-app-intents.html
Das Problem bei der Verwendung von "Geo: Breite, Länge" besteht darin, dass Google Maps nur an Ihrem Punkt zentriert ist, ohne Stift oder Beschriftung.
Das ist ziemlich verwirrend, besonders wenn Sie auf einen genauen Ort zeigen oder / und nach dem Weg fragen müssen.
Wenn Sie den Abfrageparameter "geo: lat, lon? Q = name" verwenden, um Ihren Geopunkt zu kennzeichnen, wird die Abfrage zum Suchen und Löschen der lat / lon-Parameter verwendet.
Ich habe einen Weg gefunden, die Karte mit lat / lon zu zentrieren und eine Stecknadel mit einem benutzerdefinierten Etikett anzuzeigen, die sehr schön anzuzeigen ist und nützlich ist, wenn ich nach dem Weg oder einer anderen Aktion frage:
HINWEIS (von @TheNail): Funktioniert nicht in Maps v.7 (neueste Version zum Zeitpunkt des Schreibens). Ignoriert die Koordinaten und sucht nach einem Objekt mit dem angegebenen Namen zwischen den Klammern. Siehe auch Absicht für Google Maps 7.0.0 mit Standort
quelle
geo:37.423156,-122.084917?q=37.423156,-122.084917 ...
?Obwohl die aktuellen Antworten großartig sind, hat keiner von ihnen genau das getan, wonach ich gesucht habe. Ich wollte nur die Karten-App öffnen und einen Namen für jeden Quellort und jedes Ziel hinzufügen. Die Verwendung des Geo-URI-Schemas würde für mich nicht funktionieren Der Weblink für Karten hatte überhaupt keine Beschriftungen, daher habe ich diese Lösung entwickelt, die im Wesentlichen eine Zusammenführung der anderen hier gemachten Lösungen und Kommentare darstellt. Hoffentlich ist sie für andere hilfreich, die diese Frage betrachten.
Um Ihren aktuellen Standort als Ausgangspunkt zu verwenden (leider habe ich keine Möglichkeit gefunden, den aktuellen Standort zu kennzeichnen), verwenden Sie Folgendes
Der Vollständigkeit halber: Wenn der Benutzer die Karten-App nicht installiert hat, ist es eine gute Idee, die ActivityNotFoundException abzufangen. Dann können wir die Aktivität ohne Einschränkung der Karten-App erneut starten. Wir können ziemlich sicher sein, dass wir sie niemals erhalten zum Toast am Ende, da ein Internetbrowser eine gültige Anwendung ist, um auch dieses URL-Schema zu starten.
PS Alle in meinem Beispiel verwendeten Breiten- oder Längengrade sind nicht repräsentativ für meinen Standort. Eine Ähnlichkeit mit einem echten Standort ist reiner Zufall, auch wenn ich nicht aus Afrika stamme: P.
BEARBEITEN:
Für Wegbeschreibungen wird jetzt eine Navigationsabsicht mit google.navigation unterstützt
quelle
Verwenden der neuesten plattformübergreifenden Google Maps-URLs : Auch wenn die Google Maps-App fehlt, wird sie im Browser geöffnet
Beispiel https://www.google.com/maps/dir/?api=1&origin=81.23444,67.0000&destination=80.252059,13.060604
quelle
Öffnen Sie Google Maps mit Intent in verschiedenen Modi:
Wir können die Google Maps App mit Absicht öffnen:
Hier ist "mode = b" für Fahrrad.
Wir können den Fahr-, Geh- und Fahrradmodus einstellen, indem wir Folgendes verwenden:
Weitere Informationen zu Absichten mit Google Maps finden Sie hier .
Hinweis: Wenn es keine Route für Fahrrad / Auto / Spaziergang gibt, wird angezeigt, dass der Weg dorthin nicht gefunden werden kann.
Sie können meine ursprüngliche Antwort hier überprüfen .
quelle
Nun, Sie können versuchen, die integrierte Anwendung Android Maps mithilfe der
Intent.setClassName
Methode zu öffnen .quelle
Für mehrere Wegpunkte kann auch Folgendes verwendet werden.
Der erste Satz von Koordinaten ist Ihr Startort. Alle nächsten sind Wegpunkte, die geplante Route führt durch.
Fügen Sie einfach weitere Wegpunkte hinzu, indem Sie am Ende "/ Breite, Länge" angeben. Laut Google Docs gibt es anscheinend ein Limit von 23 Wegpunkten . Ich bin mir nicht sicher, ob dies auch für Android gilt.
quelle
Wenn Sie den Breiten- und Längengrad aus der aktuellen Richtung anzeigen möchten, können Sie Folgendes verwenden:
Die folgende Abfrage hilft Ihnen dabei. Hier können Sie den Breiten- und Längengrad des Ziels eingeben:
Verwenden Sie oben als:
Oder wenn Sie über den Ort anzeigen möchten, verwenden Sie:
Weitere Informationen hier: Google Maps Intents für Android
quelle
mapIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Google
DirectionsView
mit Quellspeicherort als aktuellem Standort und Zielspeicherort als ZeichenfolgeOben
destinationCityName
ist eine Zeichenfolge variabel, die nach Bedarf geändert werden kann.quelle
Versuche dies
quelle
Das hat bei mir funktioniert:
quelle
Wenn Sie Punkt A, Punkt B (und alle dazwischen liegenden Funktionen oder Spuren) kennen, können Sie zusammen mit Ihrer Absicht eine KML-Datei verwenden.
Weitere Informationen finden Sie in dieser SO-Antwort
HINWEIS: In diesem Beispiel wird eine Beispieldatei verwendet, die (Stand: März 13) noch online ist. Wenn es offline gegangen ist, suchen Sie eine kml-Datei online und ändern Sie Ihre URL
quelle
Zuerst müssen Sie jetzt, da Sie die implizite Absicht verwenden können, die Android-Dokumentation liefert uns sehr detaillierte allgemeine Absichten für die Implementierung der Kartenabsicht, die Sie benötigen, um eine neue Absicht mit zwei Parametern zu erstellen
Für Aktionen, die wir verwenden können,
Intent.ACTION_VIEW
und für Uri sollten wir sie erstellen. Unten habe ich einen Beispielcode angehängt, um die Aktivität zu erstellen, zu erstellen und zu starten.quelle
<scheme>://<authority><absolute path>?<query>#<fragment>
nicht für undurchsichtige URIs<scheme>:<opaque part>#<fragment>
. Der obige Code liefert den folgenden URI:geo:/0%2C0?Eiffel%20Tower
Dadurch stürzt die Google Maps-App ab. Sogar die offizielle Dokumentation verwendet aus diesem Grund rohe / undurchsichtige URIs. Der richtige Code wäre dann:Uri.parse("geo:0,0?q=" + Uri.encode("Eiffel Tower"))
Eine nette Kotlin-Lösung, die die neueste plattformübergreifende Antwort von lakshman sai verwendet ...
Kein unnötiger Uri.toString und der Uri.parse, diese Antwort ist sauber und minimal:
quelle
Auf diese Weise können Sie Google Maps Directions über eine Absicht auf Android starten
quelle