Manchmal möchten Sie die Route planen, die Ihre App Nutzern zur Verfügung stellt. Mit einem Routentoken aus der Routes API, Routes Preferred API oder Route Optimization API können Sie zwei Dinge für Ihre geplante Route angeben:
Eine Polylinie für die Route
Ihre Routenziele
Hier einige Beispiele für Routenziele:
Lieferzeit minimieren: Ein Unternehmen, das Lebensmittel liefert, möchte die Lieferzeit minimieren.
Reisezeit oder Kraftstoffverbrauch minimieren: Ein Logistikunternehmen möchte die Effizienz seiner Fahrer verbessern und die Kraftstoffkosten senken.
Zeit bis zum Ziel minimieren: Ein Dienstleistungsunternehmen möchte die Zeit minimieren, die benötigt wird, bis die Mitarbeiter eine Arbeitsanfrage erreichen.
Kosten senken und Sicherheit verbessern: Ein Mitfahrdienst möchte eine Route finden, die für die Fahrgäste weniger kostet und aus Sicherheitsgründen bestimmte Gebiete vermeidet.
Weitere Informationen zum Planen einer Route mit einem Routentoken finden Sie unter Routentoken in der Routes API anfordern und Polylinien und Routen Tokens in der Route Optimization API überführen.
Warum ein Routentoken für Routenziele verwenden?
Mit einem Routentoken aus der Routes API, Routes Preferred API oder Route Optimization API haben Sie mehr Kontrolle über die bereitgestellte Route:
Route im Voraus planen , die das Navigation SDK nach Möglichkeit verwenden soll.
Die beste Route für das Navigation SDK auswählen. Wenn Sie beim Generieren von Routen in der Routes API Routentokens anfordern, erhalten Sie für jede generierte Route ein Routentoken. Sie können dann das Token für die Route auswählen, die Sie verwenden möchten, wenn Sie es an das Navigation SDK übergeben.
Preis im Voraus schätzen, einschließlich Schätzungen für die voraussichtliche Ankunftszeit und die Entfernung. Die tatsächlichen Kosten und die tatsächliche Zeit können zwar abweichen, aber diese Schätzung verringert die Differenz zwischen den erwarteten und den tatsächlichen Routenkosten.
Erweiterte Routenziele angeben, z. B. umweltfreundliche Routen oder die kürzeste Route.
Funktionsweise von Routentokens
Mit der Routes API, Routes Preferred API oder Route Optimization API können Sie eine Route mit Routenzielen planen. Sie können ein Routentoken, das von einer dieser APIs zurückgegeben wird, an das Navigation SDK übergeben, um festzulegen, wie das Fahrzeug geroutet werden soll.
So funktioniert das Anfordern und Verwenden eines Routentokens:
Die Routes API, Routes Preferred API oder Route Optimization API gibt ein verschlüsseltes Routentoken zurück, das die Routenpolylinie und die Routenziele enthält.
Sie übergeben das Routentoken an das Navigation SDK.
Das Navigation SDK ruft die Route ab. Wenn die Route aufgrund geänderter Bedingungen nicht verfügbar ist, wird die am besten passende Route abgerufen.
Wenn sich während der Fahrt die Verkehrs- oder Straßenverhältnisse ändern oder ein Fahrzeug von der geplanten Route abweicht, wird bei den geänderten Routen immer wieder versucht, die beste Route basierend auf den Routenzielen im Token zu finden.
So wird die tatsächliche Route so nah wie möglich an die geplante Route herangeführt.
Warum eine geplante Route möglicherweise nicht genau eingehalten wird
Betrachten Sie Ihre geplante Route und Ihre Routenziele als Richtlinien, die Sie befolgen können, aber nicht müssen. Es kann eine Abweichung zwischen der geplanten Route und der Route geben, die von der geführten Navigation bereitgestellt wird. Das liegt an Unterschieden bei den Straßenverhältnissen, dem Startort oder anderen Parametern, die sich seit der Erstellung der geplanten Route geändert haben. Diese Abweichung kann zu einer Diskrepanz zwischen den geplanten und den tatsächlichen Zielen für Entfernung und voraussichtliche Ankunftszeit sowie anderen wichtigen Fahrtmerkmalen führen.
Route mit einem Routentoken planen
Sie können eine Route planen, indem Sie ein Routentoken erstellen und es dann an das Navigation SDK übergeben. Die einzelnen Schritte sind unten beschrieben:
Schritt 1: Routentoken mit der Routes API, Routes Preferred API oder Route Optimization API erstellen
Routentoken anfordern : Verwenden Sie dazu eine der folgenden Methoden:
Routes API:
computeRoutes. Weitere Informationen zum Anfordern eines Routentokens in der Routes API finden Sie unter Route berechnen und Routentoken anfordern.Routes Preferred API:
computeCustomRoutes. Weitere Informationen zum Anfordern eines Routentokens in der Routes Preferred API finden Sie unter Route planen.Route Optimization API:
optimizeToursoderbatchOptimizeTours. Weitere Informationen zum Anfordern eines Route tokens in der Route Optimization API finden Sie unter Polylinien und Route Tokens überführen.
Anfrage an die Routes API oder Routes Preferred API einrichten , um die Anforderungen für die Verwendung eines Routentokens zu erfüllen:
travel_modeaufDRIVEoderTWO_WHEELERfestlegenrouting_preferenceaufTRAFFIC_AWAREoderTRAFFIC_AWARE_OPTIMALfestlegen- Keine
Via-Wegpunkte verwenden
Schritt 2: Routentoken an das Navigation SDK übergeben
Routentoken speichern: Richten Sie im Navigation SDK einen String ein, um das Routentoken zu speichern. Beispiel:
let routeToken = "route token returned by Routes API"Beispiel für ein zurückgegebenes Routentoken:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }Routentoken übergeben : Verwenden Sie dazu die Methode
mapView.navigator setDestinationsdes Navigation SDK und geben Sie dieselben Zielwegpunkte an, die Sie beim Erstellen des Routentokens verwendet haben:mapView.navigator?.continueToNextDestination([waypoint1, waypoint2], routeToken: routeToken, callback: {...})Die Methode
Navigator.continueToNextDestinationgibt den Status der Anfrage zurück. Wenn eine Route vom Standort des Nutzers zum angegebenen Ziel gefunden wird, wirdRouteStatus.OKzurückgegeben.
Szenarien mit mehreren Zwischenstopps
Sie können maximal 25 Wegpunkte konfigurieren.
Die Methode setDestinations unterstützt keine Fahrten mit mehreren Zwischenstopps. Verwenden Sie continueToNextDestination(), um den Wegpunkt zum nächsten Abschnitt der Fahrt zu verschieben.
Beispiel
Die folgenden Codebeispiele zeigen, wie Sie eine geplante Route abrufen.
Swift
let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!
let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
Objective-C
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";
[mapView.navigator continueToNextDestination:@[waypoint1, waypoint2]
routeToken:routeToken
callback:^(GMSRouteStatus routeStatus){...}];
Interaktion zwischen Routentokens und dem Navigation SDK
So interagieren die vom Navigation SDK generierte Route und die geplante Route im Routentoken:
Überschreibt alle zuvor festgelegten Ziele.
Verwendet den Startort des Fahrzeugs.
Passt sich an Straßen- und Verkehrsverhältnisse an. Weitere Informationen finden Sie unter Warum eine geplante Route möglicherweise nicht genau eingehalten wird.
Ignoriert die folgenden routenbezogenen Optionen, da sie nicht erforderlich sind:
avoidsHighwaysavoidsTollsavoidsFerrieslicensePlateRestriction
Folgt:
Wegpunktbezogene Optionen, z. B. die Bevorzugung der Straßenseite.
Routenziele. Wenn das Navigation SDK die zurückgegebene Route anpassen muss, werden die Routenziele verwendet, die Sie beim Anfordern des Routentokens angegeben haben. Verwenden Sie daher dieselben wegpunktbezogenen Optionen, die Sie in der Routes API angegeben haben.