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 umwandeln.
Vorteile von Routentokens für Routenziele
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 , damit sie nach Möglichkeit vom Navigation SDK verwendet werden kann.
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 sichergestellt, dass die tatsächliche Route so nah wie möglich an der geplanten Route liegt.
Warum eine geplante Route möglicherweise nicht genau eingehalten wird
Ihre geplante Route und Ihre Routenziele sind 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 Schritte sind unten beschrieben:
Schritt 1: Routentoken mit der Routes API, Routes Preferred API oder Route Optimization API erstellen
Routentoken anfordern : Verwenden Sie 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 umwandeln.
Anfrage an die Routes API oder Routes Preferred API einrichten , um die Anforderungen für die Verwendung eines Routentokens zu erfüllen:
- Legen Sie für
travel_modeden WertDRIVEoderTWO_WHEELERfest. - Legen Sie für
routing_preferenceden WertTRAFFIC_AWAREoderTRAFFIC_AWARE_OPTIMALfest. - Verwenden Sie keine
Via-Wegpunkte.
- Legen Sie für
Schritt 2: Routentoken an das Navigation SDK übergeben
Routentoken speichern: Richten Sie im Navigation SDK einen String ein, in dem das Routentoken gespeichert werden soll. Beispiel:
String routeToken = "route token returned by Routes API";
Beispiel für ein zurückgegebenes Routentoken:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }Routentoken übergeben : Übergeben Sie das Routentoken mit der Methode
Navigator.setDestinationsan das Navigation SDK. Geben Sie dabei dieselben Zielwegpunkte an, die Sie beim Erstellen des Routentokens verwendet haben:setDestinations(List
destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions); Beispiel:
CustomRoutesOptions customRoutesOptions = CustomRoutesOptions.builder() .setRouteToken(routeToken) .setTravelMode(TravelMode.DRIVING) .build();
Die Methode Navigator.setDestinations gibt den Status der Anfrage zurück. Wenn eine Route vom Standort des Fahrzeugs zum angegebenen Ziel gefunden wird, wird RouteStatus.OK zurückgegeben.
Weitere Informationen zu dieser Methode finden Sie unter
Navigator.setDestinations.
Beispiel
Das folgende Codebeispiel zeigt, wie Sie eine geplante Route mit einem Routentoken angeben.
ArrayList <Waypoint> destinations = Lists.newArrayList();
Waypoint waypoint1 =
Waypoint.builder()
.setLatLng(10, 20)
.setTitle("title")
.setVehicleStopover(true)
.build();
destinations.add(waypoint1);
Waypoint waypoint2 =
Waypoint.builder()
.setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
.setTitle("title")
.setVehicleStopover(true)
.build()
destinations.add(waypoint2);
String routeToken = "route token returned by Routes API";
CustomRoutesOptions customRoutesOptions =
CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(TravelMode.DRIVING)
.build();
// Existing flow to get a Navigator.
NavigationApi.getNavigator(...);
// Existing flow for requesting routes.
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions);
// Or with display options.
DisplayOptions displayOptions = new DisplayOptions();
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions, displayOptions);
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 routingbezogenen 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.