Nawigowanie po trasach dla dużych pojazdów

Dla kogo jest ten przewodnik: jeśli jesteś deweloperem aplikacji mobilnych i odpowiadasz za tworzenie nawigacji krok po kroku dla kierowców ciężarówek, autobusów lub innych dużych pojazdów użytkowych, przeczytaj ten przewodnik.

Czego dowiesz się z tego przewodnika: z tego przewodnika dowiesz się, jak korzystać z trasy dla ciężarówki wygenerowanej przez interfejs Routes API lub Route Optimization API i używać jej do obsługi sesji nawigacji krok po kroku za pomocą pakietu Navigation SDK na Androida.

Czego się nauczysz

Dowiesz się, jak wykonać te czynności:

  • Używać routeToken , aby połączyć planowanie trasy w backendzie z nawigacją w aplikacji.
  • Skonfigurować pakiet Navigation SDK do korzystania z wcześniej zaplanowanej trasy dla ciężarówki.
  • Dowiedzieć się, jak ograniczenia dotyczące ciężarówek są wyświetlane kierowcy w interfejsie nawigacji.

Wymagania wstępne

Zanim zaczniesz, upewnij się, że spełniasz te wymagania:

1. Poproś o dostęp do projektu

Routing dla dużych pojazdów jest dostępny dla ograniczonej grupy klientów. Aby wyrazić zainteresowanie i poprosić o dostęp do projektu Google Cloud, wypełnij formularz kontaktowy. Przedstawiciel Google skontaktuje się z Tobą, aby omówić dalsze kroki.

Gdy Google przyzna Ci dostęp, upewnij się, że Twój projekt w chmurze Google Cloud jest skonfigurowany pod kątem routingu dla dużych pojazdów.

Jeśli Twoja organizacja używa osobnych projektów Google Cloud na potrzeby interfejsów API routingu w backendzie i pakietu Navigation SDK na urządzenia mobilne, skontaktuj się z Google, aby skonfigurować każdy projekt.

2. Skonfiguruj generowanie tras w backendzie i uzyskaj token trasy

Zanim rozpoczniesz nawigację na urządzeniu, serwer backendu musi wygenerować trasę dla ciężarówki i uzyskać routeToken za pomocą jednego z tych interfejsów API:

Żądanie backendu musi zawierać travelMode: TRUCK oraz fizyczne atrybuty pojazdu (wysokość, szerokość, długość, waga, liczba osi i ładunek niebezpieczny). Interfejs Routing API zwraca w odpowiedzi routeToken, który serwer backendu przekazuje do aplikacji mobilnej.

3. Spełnij minimalne wymagania dotyczące pakietu SDK i systemu

Twoja aplikacja musi używać co najmniej wymaganej wersji pakietu Navigation SDK, czyli 5.2.0 lub nowszej.

Ponadto Twój projekt musi spełniać standardowe wymagania dotyczące konfiguracji pakietu Navigation SDK.

Ograniczenia i wytyczne operacyjne

Zanim zaczniesz, zapoznaj się z tymi ograniczeniami i wytycznymi operacyjnymi:

  • Dostępność geograficzna: routing dla dużych pojazdów jest dostępny w 48 sąsiadujących ze sobą stanach USA (dostępność ogólna) i Japonii (wersja eksperymentalna). Nie jest dostępny na Alasce, Hawajach ani na terytoriach Stanów Zjednoczonych.
  • Informacje dla kierowcy i bezpieczeństwo: kierowcy nie mogą polegać wyłącznie na trasach zwracanych przez pakiet Navigation SDK, aby zapewnić sobie bezpieczeństwo i przestrzegać przepisów. Trasy mogą nie być odpowiednie dla pojazdu w każdych warunkach drogowych, a ich pokonywanie może narażać kierowców na niebezpieczeństwa, takie jak niskie prześwity lub drogi z ograniczeniami wagi. Kierowcy muszą zawsze zachowywać czujność i przestrzegać znaków drogowych oraz lokalnych przepisów.
  • Trasy z najlepszymi możliwymi wynikami: jeśli interfejs Routing API nie może znaleźć trasy, która w pełni spełnia ograniczenia dotyczące pojazdu, zwraca trasę „z najlepszymi możliwymi wynikami”, która może nadal przebiegać przez odcinki z ograniczeniami. Na przykład interfejs Routes API ustawia w odpowiedzi flagę routeRestrictionsPartiallyIgnored. Podczas nawigowania po tych trasach pakiet Navigation SDK wyświetla objaśnienia trasy, aby wyróżnić odpowiednie ograniczenia. W takich przypadkach dokładnie planuj trasy i nie używaj oznaczonej trasy jako jedynego źródła informacji do planowania lub nawigacji.
  • Nieobsługiwane funkcje: routing dla dużych pojazdów nie obsługuje tych funkcji:
    • Opłaty za przejazd dla ciężarówek
    • Ograniczenia prędkości dla ciężarówek i dużych pojazdów
    • Routing dla radioaktywnych materiałów niebezpiecznych
  • Limity użycia: żądania wysyłane do pakietu Navigation SDK podlegają standardowym limitom użycia i limitom przydziału. Więcej informacji znajdziesz w artykule Użycie i rozliczenia.

Wyświetlanie interfejsu specyficznego dla ciężarówek (objaśnienia trasy)

Pakiet Navigation SDK automatycznie wyświetla na mapie ostrzeżenia wizualne, czyli objaśnienia trasy, aby ostrzegać kierowców o nadchodzących ograniczeniach dotyczących ciężarówek. Objaśnienia pojawiają się w przypadku ograniczeń występujących na zaplanowanej trasie, ale nie są wyświetlane na innych pobliskich drogach.

Pakiet Navigation SDK zawiera objaśnienia dotyczące tych ograniczeń:

Ograniczenie Ikona i tekst objaśnienia Warunki wyświetlania
Wysokość Żółta ikona ograniczenia wysokości
Żółty = ostrzeżenie, Twój pojazd jest blisko maksymalnej dopuszczalnej wysokości
Czerwona ikona ograniczenia wysokości
Czerwony = Twój pojazd przekracza maksymalną dopuszczalną wysokość
Gdy wysokość pojazdu jest zbliżona do ograniczenia, wyświetla się żółte objaśnienie.
Mapa z ostrzeżeniem o ograniczeniu wysokości
Jeśli trasa jest niezgodna z przepisami i narusza ograniczenie wysokości, wyświetla się czerwone objaśnienie.
Mapa pokazująca naruszenie ograniczenia wysokości
Waga Ikona ograniczenia wagi Gdy waga pojazdu przekracza limit drogi, wyświetla się czerwone objaśnienie.
Mapa z ikoną ograniczenia wagi
Zakaz ciężarówek Ikona zakazu wjazdu dla ciężarówek Gdy jedziesz odcinkiem drogi z ograniczeniem dla ciężarówek, wyświetla się czerwone objaśnienie.
Mapa z ikoną zakazu wjazdu dla ciężarówek
Materiały niebezpieczne Ikona towarów niebezpiecznych Gdy przewożenie materiałów niebezpiecznych jest zabronione na danym odcinku drogi, wyświetla się czerwone objaśnienie.
Mapa z ikoną towarów niebezpiecznych

Jak działają tokeny trasy

routeToken to zaszyfrowany zrzut trasy utworzonej przez backend routingu Google. Zawiera on geometrię zaplanowanej trasy oraz fizyczne wymiary pojazdu i profil ograniczeń.

Proces przebiega w tych krokach:

  1. Poproś o trasę: serwer backendu wysyła żądanie trasy dla ciężarówki do interfejsu Routes API (lub Route Optimization API).
  2. Otrzymaj token: interfejs Routing API oblicza zgodną trasę i zwraca routeToken do serwera backendu.
  3. Przekaż token: serwer backendu przekazuje routeToken i współrzędne miejsca docelowego do aplikacji mobilnej.
  4. Przekaż do pakietu SDK: aplikacja mobilna przekazuje routeToken do pakietu Navigation SDK.
  5. Rozpocznij nawigację: Pakiet Navigation SDK obsługuje wszystkie aspekty nawigacji krok po kroku, w tym renderowanie objaśnień trasy i obsługę dynamicznego wyznaczania trasy zgodnie z ograniczeniami dotyczącymi pojazdu.

Dynamiczne ponowne obliczanie i wyznaczanie trasy

Podczas aktywnej nawigacji warunki na drodze, zamknięcia dróg lub pominięte skręty mogą spowodować, że pojazd zboczy z zaplanowanej trasy.

Gdy nastąpi zmiana trasy:

  • Pakiet Navigation SDK automatycznie ponownie oblicza trasę do miejsca docelowego.
  • Pakiet SDK zachowuje atrybuty i wymiary pojazdu zakodowane w oryginalnym routeToken.
  • Nowo obliczona trasa omija niskie prześwity, mosty z ograniczeniami wagi i drogi, na których obowiązuje zakaz wjazdu dla ciężarówek.

Implementacja: rozpoczęcie przejazdu dla ciężarówki

Aby zainicjować i rozpocząć nawigację krok po kroku za pomocą tokena trasy dla dużego pojazdu, wykonaj te czynności.

Krok 1. Uzyskaj token trasy z backendu

Aplikacja mobilna otrzymuje ciąg znaków routeToken wraz ze współrzędnymi miejsca docelowego z serwera backendu. Szczegółowe informacje o generowaniu tego tokena na serwerze znajdziesz w artykule Generowanie tras dla dużych pojazdów i szacowanie czasu przyjazdu w dokumentacji interfejsu Routes API.

Ten kod to przykładowy token trasy:

{
  "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g"
}

Krok 2. Skonfiguruj CustomRoutesOptions

Przekaż token trasy do instancji CustomRoutesOptions za pomocą CustomRoutesOptions.builder:

  • Przekaż token za pomocą setRouteToken(routeToken).
  • Ustaw tryb podróży za pomocą setTravelMode(CustomRoutesOptions.TravelMode.DRIVING).

Krok 3. Określ punkty pośrednie i ustaw miejsca docelowe

Przekaż punkty pośrednie miejsca docelowego i CustomRoutesOptions do navigator.setDestinations.

Podczas konfigurowania punktów pośrednich i przekazywania niestandardowych opcji trasy pamiętaj o tych kwestiach:

  • Wymaganie dotyczące zgodności miejsca docelowego: współrzędne miejsca docelowego przekazywane do setDestinations muszą być zgodne ze współrzędnymi miejsca docelowego używanymi podczas generowania routeToken. Określenie innego miejsca docelowego spowoduje błąd.
  • Routing po stronie drogi: duże pojazdy użytkowe nie mogą łatwo zawracać na wąskich ulicach. Aby zapewnić, że ciężarówka zbliża się do miejsca docelowego po właściwej stronie drogi, wywołaj setPreferSameSideOfRoad(true) w punktach pośrednich.
  • Przystanki pojazdu: aby poprowadzić ciężarówkę do odpowiedniego miejsca na przystanek lub rozładunek, wywołaj setVehicleStopover(true) w punktach pośrednich.
  • Punkty nawigacyjne: jeśli miejsce docelowe ma wyznaczone wejście dla towarów lub rampę załadunkową, określ je za pomocą tokena punktu nawigacyjnego.

Krok 4. Obsłuż stan trasy i rozpocznij nawigację

Zarejestruj OnResultListener w ListenableResultFuture<Navigator.RouteStatus>. Gdy stan trasy to OK, wywołaj navigator.startGuidance, aby rozpocząć aktywną nawigację krok po kroku.

Przykładowy kod

Użyj CustomRoutesOptions.builder, aby ustawić token, a następnie przekaż go do 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)

Wyświetlacze w pojeździe

Sesję nawigacji dla dużego pojazdu możesz wyświetlać na ekranach w desce rozdzielczej za pomocą Nawigacji w Android Auto.

Dalsze kroki

  • Zmodyfikuj interfejs nawigacji: dostosuj wbudowane elementy sterujące interfejsu i elementy wizualne, takie jak kompas, przycisk ponownego wyśrodkowania i perspektywa kamery.
  • Nasłuchuj zdarzeń nawigacji: obsługuj aktualizacje nawigacji i zdarzenia cyklu życia, takie jak postęp trasy, zmiany szacowanego czasu dotarcia na miejsce i zmiany trasy.