Nawigowanie po trasach dla dużych pojazdów

Dla kogo jest ten przewodnik: przeczytaj ten przewodnik, jeśli jesteś programistą aplikacji mobilnych, który odpowiada za tworzenie nawigacji krok po kroku dla kierowców ciężarówek, autobusów lub innych dużych pojazdów komercyjnych.

Zakres tego przewodnika: z tego przewodnika dowiesz się, jak korzystać z trasy dla ciężarówek wygenerowanej przez interfejs Routes API lub interfejs Route Optimization API, aby prowadzić sesję nawigacji krok po kroku za pomocą pakietu Navigation SDK na Androida.

Czego się nauczysz

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

  • Użyj routeToken, aby połączyć planowanie trasy na backendzie z nawigacją w aplikacji.
  • Skonfiguruj pakiet Navigation SDK, aby korzystał z wcześniej zaplanowanej trasy dla ciężarówki.
  • Dowiedz 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. Prośba o dostęp do projektu

Wyznaczanie tras dla dużych pojazdów jest dostępne dla ograniczonej liczby 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, sprawdź, czy Twój projekt w chmurze Google Cloud jest przystosowany do wyznaczania tras dla dużych pojazdów.

Jeśli Twoja organizacja używa osobnych projektów Google Cloud do interfejsów API routingu backendu i pakietu SDK nawigacji mobilnej, skontaktuj się z Google, aby udostępnić każdy projekt.

2. Konfigurowanie generowania tras backendu i uzyskiwanie tokena 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ć parametr travelMode: TRUCK wraz z atrybutami fizycznymi pojazdu (wysokość, szerokość, długość, waga, liczba osi i ładunek niebezpieczny). Interfejs API do wyznaczania tras zwraca w odpowiedzi wartość routeToken, którą serwer backendu przekazuje do aplikacji mobilnej.

3. Spełnianie minimalnych wymagań dotyczących pakietu SDK i wymagań systemowych

Aplikacja musi korzystać z minimalnej wymaganej wersji pakietu Navigation SDK, czyli 5.2.0 lub nowszej.

Dodatkowo 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: wyznaczanie tras dla dużych pojazdów jest dostępne w 48 sąsiadujących ze sobą stanach USA (ogólnie dostępne) i w Japonii (eksperymentalnie). Nie jest dostępna na Alasce, Hawajach ani na terytoriach zależnych Stanów Zjednoczonych.
  • Porady dla kierowców i bezpieczeństwo: kierowcy nie mogą polegać wyłącznie na trasach zwracanych przez pakiet Navigation SDK, aby zapewnić bezpieczeństwo lub zgodność z przepisami. Trasy mogą nie być odpowiednie dla pojazdu w każdych warunkach drogowych, a podążanie nimi może narażać kierowców na zagrożenia, 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: gdy interfejs API do wyznaczania tras 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 przebiegać przez odcinki objęte ograniczeniami. Na przykład interfejs Routes API ustawia w odpowiedzi flagę routeRestrictionsPartiallyIgnored. Podczas nawigowania po tych trasach pakiet Navigation SDK wyświetla wywołania 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: wyznaczanie tras dla dużych pojazdów nie obsługuje tych funkcji:
    • Ceny za przejazd ciężarówką
    • limity prędkości dla ciężarówek i pojazdów ciężkich;
    • Trasy przewozu radioaktywnych materiałów niebezpiecznych
  • Limity wykorzystania: żądania wysyłane do pakietu Navigation SDK podlegają standardowym limitom wykorzystania i limitom liczby żądań. Więcej informacji znajdziesz w artykule Wykorzystanie i rozliczenia.

Wyświetlanie interfejsu użytkownika dostosowanego do samochodów ciężarowych (wywołania trasy)

Pakiet Navigation SDK automatycznie wyświetla na mapie wizualne ostrzeżenia, zwane wskazówkami dotyczącymi trasy, aby ostrzegać kierowców o nadchodzących ograniczeniach dla ciężarówek. Wywołania pojawiają się w przypadku ograniczeń występujących na zaplanowanej trasie, ale nie wyświetlają się na innych pobliskich drogach.

Pakiet SDK do nawigacji zawiera wywołania tych ograniczeń:

Ograniczenie Ikona i tekst objaśnienia Warunki wyświetlania
Wysokość Żółta ikona ograniczenia wysokości
Żółty = ostrzeżenie, pojazd zbliża się do maksymalnej dozwolonej wysokości
Czerwona ikona ograniczenia wysokości
Czerwony = pojazd przekracza maksymalną dozwoloną wysokość
Gdy wysokość pojazdu jest zbliżona do ograniczenia, pojawia się żółty dymek.
Mapa z ostrzeżeniem o ograniczeniu wysokości
Jeśli trasa jest niezgodna z przepisami i narusza ograniczenie wysokości, pojawi się czerwony wywołanie.
Mapa pokazująca naruszenie ograniczenia wysokości
Waga Ikona ograniczenia wagi Gdy waga pojazdu przekracza limit drogi, pojawia się czerwony wywołanie.
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, pojawia się czerwony wywołanie.
Mapa z ikoną zakazu wjazdu dla ciężarówek
Materiały niebezpieczne Ikona towarów niebezpiecznych Gdy przewóz materiałów niebezpiecznych jest zabroniony na danym odcinku drogi, pojawia się czerwony wykrzyknik.
Mapa z ikoną towarów niebezpiecznych

Jak działają tokeny trasy

routeToken to zaszyfrowany zrzut trasy utworzony przez backend routingu Google. Zawiera on geometrię zaplanowanej trasy, a także wymiary fizyczne pojazdu i profil ograniczeń.

Proces składa się z tych kroków:

  1. Żądanie trasy: serwer backendu wysyła żądanie trasy dla ciężarówki do interfejsu Routes API (lub Route Optimization API).
  2. Otrzymywanie tokena: interfejs Routing API oblicza zgodną trasę i zwraca routeToken na serwer backendu.
  3. Przekazywanie tokena: serwer backendu przekazuje współrzędne routeToken i miejsca docelowego do aplikacji mobilnej.
  4. Przekazywanie do pakietu SDK: aplikacja mobilna przekazuje routeToken do pakietu Navigation SDK.
  5. Rozpoczęcie nawigacji: Navigation SDK obsługuje wszystkie aspekty nawigacji krok po kroku, w tym renderowanie wywołań trasy i obsługę dynamicznego wyznaczania nowej trasy zgodnie z ograniczeniami pojazdu.

Dynamiczne ponowne obliczanie trasy i zmiana 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 przelicza trasę do miejsca docelowego.
  • Pakiet SDK zachowuje atrybuty i wymiary pojazdu zakodowane w oryginalnym routeToken.
  • Nowo obliczona trasa omija miejsca o niskim prześwicie, mosty z ograniczeniem wagi i drogi, po których nie mogą poruszać się ciężarówki.

Wdrożenie: rozpoczęcie przejazdu dostosowanego do ciężarówki

Aby zainicjować nawigację krok po kroku i ją rozpocząć 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 szacowanych czasów przyjazdu w dokumentacji interfejsu Routes API.

Poniższy kod to przykładowy token trasy:

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

Krok 2. Skonfiguruj CustomRoutesOptions

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

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

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

Przejedź przez punkty trasy 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 funkcji setDestinations muszą być zgodne ze współrzędnymi miejsca docelowego używanymi podczas generowania funkcji routeToken. Określenie innego miejsca docelowego powoduje błąd.
  • Wyznaczanie trasy po poboczu: duże pojazdy komercyjne nie mogą łatwo zawracać na wąskich ulicach. Aby mieć pewność, że ciężarówka zbliża się do miejsca docelowego po właściwej stronie drogi, wywołaj funkcję setPreferSameSideOfRoad(true) na punktach pośrednich.
  • Przystanki pojazdu: aby skierować ciężarówkę do odpowiedniego miejsca na przystanek lub rozładunek, zadzwoń pod numer setVehicleStopover(true) na punktach trasy.
  • Punkty nawigacyjne: jeśli miejsce docelowe ma wyznaczone wejście dla pojazdów dostawczych lub rampę załadunkową, określ je za pomocą tokena punktu nawigacyjnego.

Krok 4. Obsługa stanu trasy i rozpoczęcie nawigacji

Zarejestruj OnResultListener na stronie ListenableResultFuture<Navigator.RouteStatus>. Gdy stan trasy to OK, zadzwoń pod numer navigator.startGuidance, aby rozpocząć aktywną nawigację krok po kroku.

Przykładowy kod

Użyj CustomRoutesOptions.builder, aby ustawić token, a następnie przekazać 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 pojazdach

Sesję nawigacji na dużym ekranie pojazdu możesz wyświetlać na ekranach wbudowanych w deskę rozdzielczą za pomocą Nawigacji w Androidzie Auto.

Dalsze kroki

  • Modyfikowanie interfejsu nawigacji: dostosowywanie wbudowanych elementów sterujących interfejsu i elementów wizualnych, takich jak kompas, przycisk ponownego wyśrodkowania i perspektywa kamery.
  • Nasłuchiwanie zdarzeń nawigacji: obsługuj aktualizacje nawigacji i zdarzenia cyklu życia, takie jak postęp na trasie, zmiany szacowanego czasu dotarcia i zmiany trasy.