Zielgruppe:Dieser Leitfaden richtet sich an Entwickler von mobilen Apps, die für die Entwicklung der detaillierten Routenführung für Fahrer von Lkw, Bussen oder anderen großen Nutzfahrzeugen verantwortlich sind.
Inhalt dieses Leitfadens:In diesem Leitfaden wird erläutert, wie Sie eine von der Routes API oder der Route Optimization API generierte Lkw-spezifische Route für eine detaillierte Routenführung mit dem Navigation SDK für Android verwenden.
Lerninhalte
Sie lernen, wie Sie die folgenden Aufgaben ausführen:
- Verwenden Sie eine
routeToken, um die Routenplanung im Backend mit der Navigation in der App zu verbinden. - Konfigurieren Sie das Navigation SDK so, dass eine vorab geplante Lkw-Route verwendet wird.
- Informationen dazu, wie Lkw-spezifische Einschränkungen in der Navigations-UI angezeigt werden
Vorbereitung
Bevor Sie beginnen, sollten Sie prüfen, ob die folgenden Anforderungen erfüllt sind:
1. Zugriff für Ihr Projekt anfordern
Die Routenplanung für große Fahrzeuge ist nur für eine begrenzte Anzahl von Kunden verfügbar. Wenn Sie Interesse haben und Zugriff für Ihr Google Cloud-Projekt anfordern möchten, füllen Sie das Kontaktformular aus. Ein Google-Mitarbeiter wird sich mit den nächsten Schritten bei Ihnen melden.
Nachdem Google den Zugriff gewährt hat, müssen Sie dafür sorgen, dass Ihr Google Cloud-Projekt für die Routenplanung für große Fahrzeuge bereitgestellt wird.
Wenn Ihre Organisation separate Google Cloud-Projekte für die Backend-Routing-APIs und das mobile Navigation SDK verwendet, wenden Sie sich an Google, um die einzelnen Projekte bereitzustellen.
2. Backend-Routengenerierung einrichten und Routentoken abrufen
Bevor die Navigation auf dem Gerät gestartet wird, muss Ihr Backend-Server eine Lkw-Route generieren und ein routeToken über eine der folgenden APIs abrufen:
- Routes API: Empfohlen für die Berechnung einzelner Lkw-Routen zwischen Start- und Zielorten. Eine Anleitung zur Einrichtung finden Sie unter Routen und voraussichtliche Ankunftszeiten für große Fahrzeuge generieren.
- Route Optimization API: Empfohlen für die Optimierung von Routen mit mehreren Zwischenstopps für eine Flotte. Weitere Informationen finden Sie im Leitfaden zur Routenplanung für große Fahrzeuge mit der Route Optimization API.
In Ihrer Backend-Anfrage müssen Sie travelMode: TRUCK zusammen mit den physischen Attributen des Fahrzeugs (Höhe, Breite, Länge, Gewicht, Achsenanzahl und Gefahrgut) angeben. Die Routing API gibt in ihrer Antwort ein routeToken zurück, das Ihr Backend-Server an Ihre mobile App weitergibt.
3. Mindestanforderungen an SDK und System erfüllen
Ihre App muss mindestens die Navigation SDK-Version 5.2.0 oder höher verwenden.Außerdem muss Ihr Projekt die standardmäßigen Einrichtungsanforderungen für das Navigation SDK erfüllen.
Einschränkungen und Betriebsrichtlinien
Beachten Sie vor dem Start die folgenden Einschränkungen und Betriebsrichtlinien:
- Geografische Verfügbarkeit: Die Routenplanung für große Fahrzeuge ist in den 48 zusammenhängenden US-Bundesstaaten (allgemein verfügbar) und in Japan (experimentell) verfügbar. In Alaska, Hawaii und US-Territorien ist die Funktion nicht verfügbar.
- Hinweise für Fahrer und Sicherheit: Fahrer dürfen sich nicht ausschließlich auf die vom Navigation SDK zurückgegebenen Routen verlassen, um sicher oder legal zu fahren. Die Routen sind möglicherweise nicht für alle Straßenbedingungen geeignet und können Fahrer Gefahren wie niedrigen Durchfahrtshöhen oder Straßen mit Gewichtsbeschränkungen aussetzen. Fahrer müssen immer aufmerksam sein und sich an die aufgestellten Verkehrsschilder und die lokalen Vorschriften halten.
- Best-Effort-Routen: Wenn die Routing API keine Route finden kann, die alle Fahrzeugeinschränkungen erfüllt, gibt sie eine „Best-Effort“-Route zurück, die möglicherweise dennoch eingeschränkte Segmente enthält. Die Routes API legt beispielsweise das Flag
routeRestrictionsPartiallyIgnoredin ihrer Antwort fest. Wenn Sie auf diesen Routen navigieren, werden im Navigation SDK Routen-Callouts angezeigt, um die relevanten Einschränkungen hervorzuheben. Planen Sie Routen in diesen Fällen sorgfältig und verwenden Sie eine markierte Route nicht als einzige verlässliche Quelle für die Planung oder Navigation. - Nicht unterstützte Funktionen: Die folgenden Funktionen werden beim Routing für große Fahrzeuge nicht unterstützt:
- Lkw-Mautgebühren
- Geschwindigkeitsbegrenzungen für Lkw oder schwere Fahrzeuge
- Routenplanung für radioaktive Gefahrgüter
- Nutzungslimits: Für Anfragen an das Navigation SDK gelten die standardmäßigen Nutzungs- und Kontingentlimits. Weitere Informationen finden Sie unter Nutzung und Abrechnung.
Lkw-spezifische Benutzeroberfläche (Routen-Callouts) anzeigen
Das Navigation SDK zeigt automatisch visuelle Warnungen, sogenannte Routenhinweise, auf der Karte an, um Fahrer auf bevorstehende Lkw-Einschränkungen hinzuweisen. Die Beschränkungen werden für die geplante Route angezeigt, aber nicht für andere Straßen in der Nähe.
Das Navigation SDK enthält Callouts für die folgenden Einschränkungen:
| Einschränkung | Callout-Symbol und -Text | Bedingungen für die Anzeige |
|---|---|---|
| Höhe |
Gelb = Warnung, Ihr Fahrzeug ist nahe an der maximal zulässigen Höhe
Rot = Ihr Fahrzeug ist höher als die maximal zulässige Höhe |
Ein gelber Hinweis wird angezeigt, wenn die Höhe des Fahrzeugs nahe an der Beschränkung liegt.
Ein roter Hinweis wird angezeigt, wenn die Route nicht konform ist und gegen eine Höhenbeschränkung verstößt.
|
| Gewicht |
|
Ein roter Hinweis wird angezeigt, wenn das Gewicht des Fahrzeugs das Limit der Straße überschreitet.
|
| Lkw-Verbot |
|
Ein roter Hinweis wird angezeigt, wenn Sie auf einem Straßensegment mit einer Einschränkung für Nutzfahrzeuge unterwegs sind.
|
| Gefährliche Güter |
|
Ein roter Hinweis wird angezeigt, wenn die Gefahrgutladung des Fahrzeugs auf einem Straßensegment nicht zulässig ist.
|
Funktionsweise von Routentokens
Ein routeToken ist ein verschlüsselter Snapshot einer Route, die vom Routing-Backend von Google erstellt wurde. Sie umfasst die geplante Routengeometrie sowie die physischen Abmessungen und das Einschränkungsprofil des Fahrzeugs.
Der Workflow umfasst folgende Schritte:
- Route anfordern: Ihr Backend-Server fordert eine Lkw-Route von der Routes API (oder der Route Optimization API) an.
- Token erhalten: Die Routing API berechnet die konforme Route und gibt ein
routeTokenan Ihren Backend-Server zurück. - Token weiterleiten: Ihr Backend-Server übergibt das
routeTokenund die Zielkoordinaten an Ihre mobile App. - An SDK übergeben: Die mobile App übergibt die
routeTokenan das Navigation SDK. - Routenführung starten: Das Navigation SDK übernimmt alle Aspekte der detaillierten Routenführung, einschließlich des Renderns von Routen-Callouts und der dynamischen Routenneuberechnung gemäß den Einschränkungen des Fahrzeugs.
Dynamische Neuberechnungen und Routenänderungen
Während der aktiven Navigation können Verkehrslage, Straßensperrungen oder verpasste Abbiegungen dazu führen, dass das Fahrzeug von der geplanten Route abweicht.
Wenn die Route neu berechnet wird, geschieht Folgendes:
- Das Navigation SDK berechnet die Route zum Ziel automatisch neu.
- Das SDK behält die Fahrzeugattribute und -dimensionen bei, die im ursprünglichen
routeTokencodiert sind. - Auf der neu berechneten Route werden niedrige Durchfahrtshöhen, Brücken mit Gewichtsbeschränkungen und Straßen, die für Nutzfahrzeuge gesperrt sind, vermieden.
Implementierung: Lkw-spezifische Fahrt starten
So initialisieren und starten Sie die detaillierte Routenführung mit einem Routentoken für große Fahrzeuge:
Schritt 1: Routentoken vom Backend abrufen
Ihre mobile App empfängt den String routeToken zusammen mit den Zielkoordinaten von Ihrem Backend-Server. Weitere Informationen zum Generieren dieses Tokens auf Ihrem Server finden Sie in der Routes API-Dokumentation unter Routen und voraussichtliche Ankunftszeiten für große Fahrzeuge generieren.
Der folgende Code ist ein Beispiel für ein Routentoken:
{
"routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g"
}
Schritt 2: CustomRoutesOptions konfigurieren
Übergeben Sie das Routentoken mit CustomRoutesOptions.builder an eine CustomRoutesOptions-Instanz:
- Übergeben Sie das Token mit
setRouteToken(routeToken). - Legen Sie die Mobilitätsform mit
setTravelMode(CustomRoutesOptions.TravelMode.DRIVING)fest.
Schritt 3: Wegpunkte definieren und Ziele festlegen
Übergeben Sie Ihre Zielwegpunkte und CustomRoutesOptions an navigator.setDestinations.
Beachten Sie beim Konfigurieren von Wegpunkten und beim Übergeben benutzerdefinierter Routenoptionen Folgendes:
- Anforderung an die Übereinstimmung des Ziels: Die an
setDestinationsübergebenen Zielkoordinaten müssen mit den Zielkoordinaten übereinstimmen, die beim Generieren desrouteTokenverwendet wurden. Wenn Sie ein anderes Ziel angeben, wird ein Fehler verursacht. - Routenführung auf der Straßenseite: Große Nutzfahrzeuge können auf engen Straßen nicht einfach wenden. Damit der Lkw das Ziel auf der richtigen Straßenseite anfährt, rufen Sie
setPreferSameSideOfRoad(true)für Ihre Wegpunkte auf. - Zwischenstopps für Fahrzeuge: Wenn Sie den Lkw zu einem geeigneten Ort zum Anhalten oder Entladen leiten möchten, rufen Sie
setVehicleStopover(true)für Ihre Wegpunkte auf. - Navigationspunkte: Wenn Ihr Ziel einen bestimmten Frachteingang oder eine bestimmte Laderampe hat, geben Sie diese mit einem Navigationspunkt-Token an.
Schritt 4: Routenstatus verarbeiten und Navigation starten
Registrieren Sie einen OnResultListener auf dem ListenableResultFuture<Navigator.RouteStatus>. Wenn der Routenstatus OK ist, rufen Sie navigator.startGuidance auf, um die detaillierte Routenführung zu starten.
Codebeispiel
Verwenden Sie CustomRoutesOptions.builder, um das Token festzulegen, und übergeben Sie es dann an navigator.setDestinations.
// Obtain the routeToken string from your backend
val routeToken = "route token returned by Routes API"
val customRoutesOptions = CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(TravelMode.DRIVING)
.build()
// Specify the same destination used to create the route token
ArrayList <Waypoint> destinations = Lists.newArrayList();
val destination = Waypoint.builder()
.setLatLng(10.0, 20.0)
.setTitle("title")
.setVehicleStopover(true)
.build()
destinations.add(destination);
navigator.setDestinations(destinations, customRoutesOptions)
Displays im Fahrzeug
Mit der Navigation für Android Auto können Sie die Navigationssitzung für große Fahrzeuge auf Bildschirme im Armaturenbrett projizieren.Nächste Schritte
- Navigations-UI ändern: Sie können integrierte UI-Steuerelemente und visuelle Elemente wie den Kompass, die Schaltfläche zum Neuzentrieren und die Kameraperspektive anpassen.
- Auf Navigationsereignisse warten: Navigationsupdates und Lifecycle-Events wie Routenfortschritt, Änderungen der voraussichtlichen Ankunftszeit und Routenneuberechnungen verarbeiten.