Dla kogo jest ten przewodnik: przeczytaj ten przewodnik, jeśli jesteś deweloperem aplikacji mobilnych i odpowiadasz za tworzenie szczegółowych wskazówek dojazdu dla kierowców ciężarówek, autobusów lub innych dużych pojazdów komercyjnych.
Co zawiera ten przewodnik: z tego przewodnika dowiesz się, jak wygenerować trasę dla ciężarówki za pomocą interfejsu Routes API lub Route Optimization API i użyć jej do rozpoczęcia sesji szczegółowej nawigacji za pomocą pakietu Navigation SDK na Androida.
Czego się nauczysz
Dowiesz się, jak:
- Użyj
routeToken, aby połączyć planowanie tras w backendzie z nawigacją w aplikacji. - Skonfiguruj pakiet Navigation SDK, aby używał zaplanowanej trasy dla ciężarówek.
- 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. Poproś 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ą w sprawie dalszych kroków.
Gdy Google przyzna dostęp, upewnij się, że Twój projekt w chmurze Google Cloud jest skonfigurowany pod kątem wyznaczania tras dla dużych pojazdów.
Jeśli Twoja organizacja używa osobnych projektów Google Cloud na potrzeby interfejsów API routingu backendu i pakietu Navigation SDK na urządzenia mobilne, skontaktuj się z Google, aby udostępnić każdy projekt.
2. Konfigurowanie generowania tras w backendzie 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 tras pojedynczych ciężarówek między miejscami początkowymi i docelowymi. Instrukcje konfigurowania znajdziesz w artykule Generowanie tras i szacowanego czasu dotarcia na miejsce dla dużych pojazdów.
- Route Optimization API: zalecany do optymalizacji tras z wieloma przystankami dla całej floty. Więcej informacji znajdziesz w przewodniku po wyznaczaniu tras dla dużych pojazdów w Route Optimization API.
Żądanie backendu musi określać travelMode: TRUCK wraz z atrybutami fizycznymi pojazdu (wysokość, szerokość, długość, waga, liczba osi i ładunek niebezpieczny). Interfejs API routingu zwraca w odpowiedzi routeToken, który serwer backendu przekazuje do aplikacji mobilnej.
3. Spełnianie minimalnych wymagań dotyczących pakietu SDK i wymagań systemowych
Twoja aplikacja musi używać minimalnej wymaganej wersji pakietu Navigation SDK, czyli 5.2.0 lub nowszej.Oprócz tego 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: wyznaczanie tras dla dużych pojazdów jest dostępne w 48 stanach kontynentalnych USA (ogólna dostępność) i Japonii (funkcja eksperymentalna). Nie jest dostępna na Alasce, Hawajach ani na terytoriach zależnych USA.
- Porady i bezpieczeństwo kierowcy: kierowcy nie powinni polegać wyłącznie na trasach zwracanych przez pakiet Navigation SDK, aby zapewnić bezpieczeństwo i zgodność z przepisami. Trasy mogą nie być odpowiednie dla pojazdu w każdych warunkach drogowych, a podążanie nimi może narazić kierowców na niebezpieczeństwa, takie jak niskie prześwity lub drogi z ograniczeniem wagowym. Kierowcy muszą zawsze zachować czujność i przestrzegać znaków drogowych oraz lokalnych przepisów.
- Trasy „best-effort”: gdy interfejs API do wyznaczania tras nie może znaleźć trasy, która w pełni spełnia ograniczenia dotyczące pojazdu, zwraca trasę „best-effort”, która może nadal przebiegać przez odcinki z ograniczeniami. Na przykład interfejs Routes API ustawia w odpowiedzi flagę
routeRestrictionsPartiallyIgnored. Podczas nawigacji po tych trasach pakiet Navigation SDK wyświetla objaśnienia dotyczące trasy, aby wyróżnić odpowiednie ograniczenia. W takich przypadkach należy starannie planować trasy i nie traktować oznaczonej trasy jako jedynego źródła wiarygodnych danych podczas planowania lub nawigacji. - Nieobsługiwane funkcje: wyznaczanie tras dla dużych pojazdów nie obsługuje tych funkcji:
- Ceny opłat drogowych dla ciężarówek
- ograniczenia prędkości dla ciężarówek i pojazdów ciężkich,
- Trasa dla materiałów niebezpiecznych radioaktywnych
- Limity wykorzystania: żądania wysyłane do pakietu Navigation SDK podlegają standardowym limitom wykorzystania i limitom przydziału. Więcej informacji znajdziesz w artykule Użycie i rozliczenia.
Wyświetlanie interfejsu dla ciężarówek (objaśnienia dotyczące trasy)
Pakiet Navigation SDK automatycznie wyświetla na mapie ostrzeżenia wizualne, zwane objaśnieniami trasy, aby ostrzegać kierowców o nadchodzących ograniczeniach dotyczących ciężarówek. Objaśnienia pojawiają się w przypadku ograniczeń, które występują na zaplanowanej trasie, ale nie są wyświetlane na innych drogach w pobliżu.
Pakiet Navigation SDK zawiera objaśnienia dotyczące tych ograniczeń:
| Ograniczenie | Ikona i tekst objaśnienia | Warunki wyświetlania |
|---|---|---|
| Wysokość |
Żółty = ostrzeżenie, Twój pojazd jest blisko maksymalnej dozwolonej wysokości
Czerwony = Twój 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ę czerwone objaśnienie.
|
| Waga |
|
Gdy waga pojazdu przekracza limit obowiązujący na drodze, pojawia się czerwone objaśnienie.
|
| Zakaz wjazdu ciężarówek |
|
Gdy jedziesz odcinkiem drogi z ograniczeniami dla ciężarówek, pojawia się czerwone objaśnienie.
|
| Materiały niebezpieczne |
|
Gdy na danym odcinku drogi obowiązuje zakaz przewozu materiałów niebezpiecznych, pojawia się czerwony dymek.
|
Jak działają tokeny trasy
routeToken to zaszyfrowany zrzut trasy utworzony przez backend routingu Google. Obejmuje geometrię planowanej trasy, a także wymiary fizyczne pojazdu i profil ograniczeń.
Ten proces składa się z takich kroków:
- Żądanie trasy: serwer backendu żąda trasy dla ciężarówki z interfejsu Routes API (lub Route Optimization API).
- Odbieranie tokena: interfejs API routingu oblicza zgodną trasę i zwraca
routeTokendo serwera backendu. - Przekazywanie tokena: serwer backendu przekazuje
routeTokeni współrzędne miejsca docelowego do aplikacji mobilnej. - Przekazywanie do pakietu SDK: aplikacja mobilna przekazuje
routeTokendo pakietu Navigation SDK. - Rozpoczęcie nawigacji: pakiet Navigation SDK obsługuje wszystkie aspekty szczegółowych wskazówek dojazdu, w tym renderowanie objaśnień trasy i obsługę dynamicznego wyznaczania trasy zgodnie z ograniczeniami pojazdu.
Dynamiczne przeliczanie i zmiana trasy
Podczas aktywnej nawigacji warunki na drodze, zamknięte drogi lub pominięte skręty mogą spowodować, że pojazd zboczy z zaplanowanej trasy.
Gdy następuje zmiana trasy:
- Pakiet Navigation SDK automatycznie ponownie oblicza trasę do miejsca docelowego.
- Pakiet SDK zachowuje atrybuty i wymiary pojazdu zakodowane w pierwotnym obiekcie
routeToken. - Nowo obliczona trasa omija niskie przejazdy, mosty z ograniczeniem tonażu i drogi, na których obowiązuje zakaz ruchu ciężarówek.
Implementacja: rozpoczynanie podróży ciężarówką
Aby zainicjować i rozpocząć szczegółową nawigację z tokenem trasy dla dużego pojazdu, wykonaj te czynności.
Krok 1. Pobierz token trasy z backendu
Aplikacja mobilna otrzymuje ciąg tekstowy 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 i szacowanego czasu dotarcia na miejsce dla dużych pojazdów 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ą CustomRoutesOptions.builder:
- Przekaż token za pomocą
setRouteToken(routeToken). - Ustaw tryb podróży za pomocą
setTravelMode(CustomRoutesOptions.TravelMode.DRIVING).
Krok 3. Zdefiniuj punkty pośrednie i ustaw miejsca docelowe
Przekaż 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
setDestinationsmuszą być zgodne ze współrzędnymi miejsca docelowego użytymi podczas generowaniarouteToken. Podanie innego miejsca docelowego powoduje błąd. - Wyznaczanie trasy po stronie drogi: duże pojazdy komercyjne nie mogą łatwo zawracać na wąskich ulicach. Aby upewnić się, że ciężarówka zbliża się do miejsca docelowego po właściwej stronie drogi, wywołaj
setPreferSameSideOfRoad(true)w punktach na trasie. - Postoje pojazdu: aby skierować ciężarówkę do odpowiedniego miejsca na postój lub rozładunek, wywołaj
setVehicleStopover(true)w punktach orientacyjnych. - Punkty nawigacyjne: jeśli miejsce docelowe ma wyznaczone wejście dla dostawców lub dok załadunkowy, określ je za pomocą tokena punktu nawigacyjnego.
Krok 4. Obsługa stanu trasy i rozpoczęcie nawigacji
Zarejestruj OnResultListener w ListenableResultFuture<Navigator.RouteStatus>. Gdy stan trasy to OK, wywołaj navigator.startGuidance, aby rozpocząć aktywną szczegółową nawigację.
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 pojazdach
Sesję nawigacji dla dużych pojazdów możesz wyświetlać na ekranach w desce rozdzielczej, korzystając z Nawigacji w Androidzie Auto.Dalsze kroki
- Modyfikowanie interfejsu nawigacji: dostosuj wbudowane elementy sterujące interfejsu i elementy wizualne, takie jak kompas, przycisk wyśrodkowania i perspektywa kamery.
- Nasłuchiwanie zdarzeń nawigacyjnych: obsługuj aktualizacje nawigacji i zdarzenia cyklu życia, takie jak postęp na trasie, zmiany szacowanego czasu dotarcia na miejsce i zmiany trasy.