Route zu Navigationspunkten

Das Navigation SDK for iOS bietet erweiterte Möglichkeiten, Wegpunkte oder Navigationspunkte anzugeben. Dadurch wird die Routenplanung genauer und die Ankunft am Zielort wird verbessert, insbesondere bei Zielen mit mehreren Eingängen oder bestimmten Navigationspunkten. Sie können Routen zu genauen Standorten mithilfe eines navigationPointToken planen. Das ist ein String, der einen Standort und zusätzlichen Routenkontext codiert. Sie können auch Breiten- und Längengrade mit einer Orts-ID kombinieren, um zusätzlichen Kontext zu erhalten.

Hintergrund

Vor Version 10.10 konnten Sie einen Waypoint entweder mit Standortkoordinaten oder einer Orts-ID definieren. Das Routing ausschließlich zu einem Breiten- und Längengrad kann manchmal zu suboptimalen Absetz- oder Abholpunkten 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 angedockt, das aber nicht unbedingt der am besten geeignete oder richtige Zugangspunkt ist.

Die erweiterten Wegpunktoptionen bieten hier Abhilfe, da Sie mehr Kontext angeben können.

Navigationspunkt-Token verwenden

Für die genaueste Routenplanung zu bestimmten Zugangspunkten 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 Navigationspunkt-Token an:

  1. Rufen Sie einen navigationPointToken aus der Antwort der SearchDestinations-Methode der Geocoding API ab.

  2. Geben Sie navigationPointToken an, wenn Sie einen GMSNavigationWaypoint erstellen.

Swift

// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
  navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3..",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

GMSNavigationWaypoint *waypointTwo =
    [[GMSNavigationWaypoint alloc] initWithNavigationPointToken:@"sampleNavigationPointToken"
                                                          title:@"Sydney Opera House"];

Navigationspunkt- und Routentokens verwenden

Sie können ein Navigationspunkt-Token über die Geocoding API abrufen, es in einer Routes API-Anfrage verwenden, um ein Routen-Token zu erhalten, und dann nur das Routen-Token an das Navigation SDK übergeben. Das Routen-Token behält die Genauigkeit des Navigationspunkt-Tokens bei. Das ist nützlich für Szenarien wie Mitfahrgelegenheiten oder Lieferungen, bei denen Sie die Routes API verwenden, um den Preis für eine Fahrt zu berechnen, und die Genauigkeit eines Navigationspunkt-Tokens benötigen.

Mit dem Routentoken startet das Navigation SDK die Navigation auf derselben Route, die Sie zur Berechnung des Preises verwendet haben. Dadurch wird das Risiko verringert, dass für die Fahrt längere oder kürzere Routen verwendet werden, was zu „Preisschocks“ führen kann.

Weitere Informationen zu Wegpunkt- und Routentokens in der Routes API finden Sie unter Orte für eine Route angeben und Routentoken abrufen. Informationen zum Planen einer Route mit einem Routentoken finden Sie unter Route planen.

Das folgende Diagramm zeigt, wie eine Mitfahr- oder Liefer-App Navigationspunkt-Tokens und Routen-Tokens zusammen verwenden würde. Ab Version 11.3 übergibt die Fahrer-App im Schritt 7 nur das Routentoken an das Navigation SDK.

Diagramm für Anwendungsfall „Mitfahrdienst oder Lieferdienst“
Diagramm eines Anwendungsfalls für Mitfahrdienste oder Lieferungen

Orts-ID und Standort kombinieren

Ab Version 10.10 können Sie beim Erstellen eines Wegpunkts sowohl eine Orts-ID als auch Standortkoordinaten angeben. Diese Methode ist nützlich, wenn Sie einen genauen Punkt (den Standort) angeben und gleichzeitig den Kontext des gesamten Orts (die Orts-ID) bereitstellen möchten. So kann das Navigations-SDK die Ankunft am Zielort besser darstellen, indem es das Zielgebäude hervorhebt oder POIs in der Nähe der Orts-ID anzeigt.

Swift

// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
  location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),  
  placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];

Hinweise

Wenn Sie sowohl placeID als auch location angeben:

  • Die Route ist hauptsächlich auf die angegebene location ausgerichtet.
  • Die placeID liefert Kontext, der die Ankunft erleichtert.
  • Fallback: Wenn das SDK feststellt, dass die angegebene placeID einem Element entspricht, das zu weit von der angegebenen location entfernt ist, wird die placeID ignoriert. In diesem Szenario wird die Route nur bis zum location berechnet und die ortsspezifischen Verbesserungen für die Ankunft sind nicht verfügbar.

Zusammenfassung der gültigen Wegpunktkonfigurationen

Spezifikation location placeID navigationPointToken Routingverhalten Ziel hervorheben
Nur Standortkoordinaten festgelegt 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 festgelegt nicht vorhanden Routen zum Standardnavigationspunkt für die Orts-ID Von Orts-ID
Nur Navigationspunkt-Token nicht vorhanden nicht vorhanden festgelegt Routen zum genauen Navigationspunkt, der durch das Token dargestellt wird Vom Ziel, das in der ursprünglichen Anfrage der Geocoding API definiert wurde
Standortkoordinaten und Orts-ID kombiniert festgelegt festgelegt nicht vorhanden Routen zum Straßenabschnitt, der den definierten Koordinaten am nächsten liegt Anhand der Orts-ID, wird jedoch nicht angezeigt, wenn die Orts-ID zu weit von den Breiten-/Längengradkoordinaten entfernt ist