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:
- Routes API: zalecany do obliczania pojedynczych tras dla ciężarówek między punktami początkowymi i docelowymi. Instrukcje konfiguracji znajdziesz w artykule Generowanie tras dla dużych pojazdów i szacowanego czasu dotarcia na miejsce.
- Route Optimization API: zalecany do optymalizacji tras z wieloma przystankami w przypadku całej floty. Więcej informacji znajdziesz w przewodniku po wyznaczaniu tras dla dużych pojazdów w interfejsie Route Optimization 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ść |
Żółty = ostrzeżenie, pojazd zbliża się do maksymalnej dozwolonej wysokości
Czerwony = pojazd przekracza maksymalną dozwoloną wysokość |
Gdy wysokość pojazdu jest zbliżona do ograniczenia, pojawia się żółty dymek.
Jeśli trasa jest niezgodna z przepisami i narusza ograniczenie wysokości, pojawi się czerwony wywołanie.
|
| Waga |
|
Gdy waga pojazdu przekracza limit drogi, pojawia się czerwony wywołanie.
|
| Zakaz ciężarówek |
|
Gdy jedziesz odcinkiem drogi z ograniczeniem dla ciężarówek, pojawia się czerwony wywołanie.
|
| Materiały niebezpieczne |
|
Gdy przewóz materiałów niebezpiecznych jest zabroniony na danym odcinku drogi, pojawia się czerwony wykrzyknik.
|
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:
- Żądanie trasy: serwer backendu wysyła żądanie trasy dla ciężarówki do interfejsu Routes API (lub Route Optimization API).
- Otrzymywanie tokena: interfejs Routing API oblicza zgodną trasę i zwraca
routeTokenna serwer backendu. - Przekazywanie tokena: serwer backendu przekazuje współrzędne
routeTokeni miejsca docelowego do aplikacji mobilnej. - Przekazywanie do pakietu SDK: aplikacja mobilna przekazuje
routeTokendo pakietu Navigation SDK. - 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
setDestinationsmuszą być zgodne ze współrzędnymi miejsca docelowego używanymi podczas generowania funkcjirouteToken. 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.