Sobald der Benutzer in meiner Anwendung auf die Schaltfläche drückt, möchte ich die Standardanwendung von Google Map öffnen und einen bestimmten Standort anzeigen. Wie kann ich es tun? (ohne zu benutzen com.google.android.maps.MapView
)
android
google-maps
LA_
quelle
quelle
lat: 59.915494, lng: 30.409456
, wird die falsche Position zurückgegeben.String.format("geo:%f,%f", latitude, longitude)
gab den String mit Kommas zurück :geo:59,915494,30,409456
.Sie können auch einfach http://maps.google.com/maps als URI verwenden
Wenn Sie sicherstellen können, dass nur die Google Maps-App verwendet wird, wird der Intent-Filter (Dialogfeld) mithilfe von nicht angezeigt
wie so:
Sie können den Positionen auch Beschriftungen hinzufügen, indem Sie nach jedem Koordinatensatz eine Zeichenfolge in Klammern einfügen:
Um den aktuellen Standort des Benutzers als Ausgangspunkt zu verwenden (leider habe ich keine Möglichkeit gefunden, den aktuellen Standort zu kennzeichnen), geben Sie den
saddr
Parameter einfach wie folgt ein:Der Vollständigkeit halber: Wenn der Benutzer die Karten-App nicht installiert hat, ist es eine gute Idee, die ActivityNotFoundException abzufangen, wie @TonyQ angibt. Dann können wir die Aktivität ohne Einschränkung der Karten-App erneut starten. Wir können ziemlich sicher sein dass wir am Ende nie zum Toast kommen werden, da ein Internetbrowser eine gültige Anwendung ist, um auch dieses URL-Schema zu starten.
BEARBEITEN:
Für Wegbeschreibungen wird jetzt eine Navigationsabsicht mit google.navigation unterstützt
quelle
Die Verwendung des String-Formats hilft, aber Sie müssen das Gebietsschema genau kennen. In Deutschland wird float mit einem Komma anstelle eines Punktes getrennt.
Wenn Sie das
String.format("geo:%f,%f",5.1,2.1);
Gebietsschema Englisch verwenden, wird das Ergebnis angezeigt,"geo:5.1,2.1"
aber mit dem Gebietsschema Deutsch erhalten Sie"geo:5,1,2,1"
Sie sollten das englische Gebietsschema verwenden, um dieses Verhalten zu verhindern.
Um eine Beschriftung für den Geopunkt festzulegen, können Sie Ihre Geo-Uri erweitern, indem Sie Folgendes verwenden:
!!! Aber seien Sie vorsichtig damit, das Geo-Uri befindet sich noch in der Entwicklung http://tools.ietf.org/html/draft-mayrhofer-geo-uri-00
quelle
Überprüfen Sie diese Seite von Google:
http://developer.android.com/guide/appendix/g-app-intents.html
Sie können eine URI des Formulars verwenden
um den Google Map Viewer zu öffnen und auf einen Ort zu verweisen.
quelle
Manchmal, wenn keine Anwendung mit geo: protocal verknüpft ist, können Sie try-catch verwenden, um die ActivityNotFoundException zu erhalten, um damit umzugehen.
Es passiert, wenn Sie einen Emulator wie androVM verwenden, auf dem Google Map standardmäßig nicht installiert ist.
quelle
Sie können auch das folgende Code-Snippet verwenden. Auf diese Weise wird das Vorhandensein von Google Maps überprüft, bevor die Absicht gestartet wird.
Referenz: https://developers.google.com/maps/documentation/android-api/intents
quelle
Verwenden Sie Folgendes, um zu einem Ort mit PIN zu gelangen:
für ohne Stift, verwenden Sie dies in uri:
quelle
Ich habe eine Beispiel-App, in der ich die Absicht vorbereite und einfach den CITY_NAME in der Absicht an die Kartenmarkierungsaktivität übergebe, die schließlich den Längen- und Breitengrad von Geocoder mithilfe von CITY_NAME berechnet.
Unten finden Sie den Codeausschnitt zum Starten der Kartenmarkierungsaktivität und der vollständigen MapsMarkerActivity.
Links verfallen, daher habe ich oben den vollständigen Code eingefügt, aber nur für den Fall, dass Sie den vollständigen Code sehen möchten, finden Sie ihn unter: https://github.com/gosaliajigar/CSC519/tree/master/CSC519_HW4_89753
quelle
Dies ist in Kotlin geschrieben. Es öffnet die Karten-App, wenn sie gefunden wurde, platziert den Punkt und lässt Sie die Reise beginnen:
Ersetzen Sie
requireActivity()
durch IhreContext
.quelle