Das Navigation SDK for Android bietet erweiterte Möglichkeiten zum Festlegen von Wegpunkten oder Navigationspunkten. So können Sie genauere Routen erstellen und die Ankunft am Zielort optimieren, insbesondere bei Zielen mit mehreren Eingängen oder bestimmten Navigationspunkten. Sie können Routen zu genauen Standorten erstellen, indem Sie einen navigationPointToken verwenden. Das ist ein String, der einen Standort und zusätzlichen Routenkontext codiert. Sie können auch Breiten- und Längengradkoordinaten mit einer Orts-ID kombinieren, um zusätzlichen Kontext zu erhalten.
Hintergrund
Vor Version 7.4 konnten Sie ein Waypoint entweder mit Breiten- und Längengradkoordinaten oder mit einer Orts-ID definieren. Die Routenplanung nur anhand von Breiten- und Längengrad kann manchmal zu suboptimalen Absetz- oder Abholorten führen, insbesondere bei großen Veranstaltungsorten, Parks oder Gebäuden mit mehreren Eingängen. Das Ergebnis wird möglicherweise an das nächstgelegene Straßensegment ausgerichtet, das nicht unbedingt der beste oder richtige Navigationspunkt ist.
Die erweiterten Wegpunktoptionen bieten hier Abhilfe, da mehr Kontext angegeben werden kann.
Navigationspunkt-Token verwenden
Für die genaueste Routenführung zu bestimmten Navigationspunkten wie Eingängen, Laderampen oder ausgewiesenen Abholbereichen können Sie einen navigationPointToken verwenden. Dieses Token wird durch Aufrufen der destinations-Methode der Geocoding API abgerufen. Er stellt einen bestimmten, routingfähigen Navigationspunkt dar, der mit einem Ort verknüpft ist.
So geben Sie ein Navigation Point-Token an:
- Rufen Sie einen
navigationPointTokenaus der Antwort der Destinations-Methode der Geocoding API ab. - Erstellen Sie mit der Methode
setNavigationPointToken()im Builder einWaypoint.
Hinweis:Wenn Sie setNavigationPointToken() verwenden, können Sie nicht gleichzeitig setLatLng() oder setPlaceIdString() verwenden. Diese Methoden schließen sich gegenseitig mit setNavigationPointToken() aus.
// Assuming 'navPointToken' is a String obtained from the destinations method of the Geocoding API
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithToken = Waypoint.builder()
.setTitle(destinationName)
.setNavigationPointToken(navPointToken)
.build();
// Use this waypoint in navigator.setDestinations()
Navigationspunkt- und Routentokens verwenden
Sie können ein Navigationspunkt-Token über die Geocoding API und ein Routen-Token über die Routes API abrufen und dann sowohl das Navigationspunkt-Token als auch das Routen-Token an das Navigation SDK übergeben. Das ist in Szenarien wie Mitfahrdiensten oder Lieferdiensten nützlich, in denen Sie die Routes API verwenden, um einen Fahrpreis zu berechnen, und die Genauigkeit eines Navigationspunkt-Tokens benötigen.
Das Routentoken beeinflusst die vom Navigation SDK ausgewählte Route in Richtung der Route, die für die Preisgestaltung verwendet wurde. So wird das Risiko verringert, dass für die Fahrt längere oder kürzere Routen verwendet werden, was zu „Preisschwankungen“ führen kann.
Weitere Informationen zum Angeben eines Orts mithilfe eines Navigationspunkt-Tokens und zum Erstellen eines Routen-Tokens finden Sie in der Routes API-Dokumentation. Unter Route planen erfahren Sie, wie Sie eine Route mit einem Routentoken planen.
In diesem Diagramm sehen Sie, wie eine Mitfahr- oder Liefer-App Navigationspunkt-Tokens und Routen-Tokens zusammen verwenden würde:
Orts-ID mit Breiten- und Längengrad kombinieren
Ab Version 7.4 können Sie beim Erstellen eines Waypoint sowohl eine Orts-ID als auch Breiten- und Längengradkoordinaten angeben. Diese Methode ist nützlich, wenn Sie einen genauen Punkt (Breiten-/Längengrad) angeben und gleichzeitig den Kontext des gesamten Orts (die Orts-ID) bereitstellen möchten. So kann das Navigation SDK eine bessere Ankunftserfahrung bieten, indem das Zielgebäude hervorgehoben oder nahegelegene Sehenswürdigkeiten angezeigt werden, die mit der Orts-ID verknüpft sind.
// Assuming 'placeId' is the Place ID String
// Assuming 'lat' and 'lng' are the double values for latitude and longitude
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithPlaceIdAndLatLng = Waypoint.builder()
.setTitle(destinationName)
.setPlaceIdString(placeId)
.setLatLng(lat, lng)
.build();
// Use this waypoint in navigator.setDestinations()
Hinweise
Wenn Sie sowohl placeId als auch latlng angeben:
- Die Route ist hauptsächlich auf das angegebene
latlngausgerichtet. - Die
placeIdwird als Kontext verwendet, um die Ankunft zu optimieren. - Fallback:Wenn das SDK feststellt, dass die angegebene
placeIdzu weit von der angegebenenlatlngentfernt ist, wird dieplaceIdignoriert. In diesem Fall wird die Weiterleitung nur zumlatlngfortgesetzt und die ortsspezifischen Verbesserungen der Ankunftsbenachrichtigungen sind nicht verfügbar.
Zusammenfassung der gültigen Wegpunktkonfigurationen
| Methode | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
Routingverhalten | Hervorhebung des Ziels |
|---|---|---|---|---|---|
| Nur Breiten-/Längengradkoordinaten | set | nicht vorhanden | nicht vorhanden | Routen zum Straßenabschnitt, der den definierten Koordinaten am nächsten liegt | Wird angezeigt, wenn das Ziel mit hoher Wahrscheinlichkeit abgeleitet werden kann. |
| Nur Orts-ID | nicht vorhanden | set | nicht vorhanden | Routen zum Standardnavigationspunkt für die Orts-ID | Von Orts-ID |
| Nur Navigationspunkt-Token | nicht vorhanden | nicht vorhanden | set | Routen zum genauen Navigationspunkt, der durch das Token dargestellt wird | Aus dem Zielort, der in der ursprünglichen destinations-Methode der Geocoding API-Anfrage definiert wurde |
| Kombination aus Breiten-/Längengradkoordinaten und Orts-ID | set | set | nicht vorhanden | Routen zum Straßenabschnitt, der den definierten Koordinaten am nächsten liegt | Über die Orts-ID, wird jedoch nicht angezeigt, wenn die Orts-ID zu weit von den Breiten-/Längenkoordinaten entfernt ist |