Nawigowanie po trasach dla dużych pojazdów

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 używanych w celach 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 uruchomienia sesji szczegółowych wskazówek dojazdu za pomocą pakietu Navigation SDK na iOS.

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 oddzielnych 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:

Żądanie backendu musi określać travelMode: TRUCK wraz z atrybutami fizycznymi pojazdu (wysokość, szerokość, długość, waga, liczba osi i ładunek niebezpieczny). Interfejs API trasowania zwraca w odpowiedzi obiekt 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 5.4.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 wskazówkami dotyczącymi działania:

  • Dostępność geograficzna: wyznaczanie tras dla dużych pojazdów jest dostępne w 48 stanach kontynentalnych USA (ogólna dostępność) i w 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 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 routingu 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 obejmować 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 starannie planuj trasy i nie używaj oznaczonej trasy jako jedynego źródła wiarygodnych danych do planowania lub nawigacji.
  • Nieobsługiwane funkcje: wyznaczanie tras dla dużych pojazdów nie obsługuje tych funkcji:
    • Opłaty drogowe 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 planowanej trasie, ale nie na innych drogach w pobliżu.

Pakiet SDK do nawigacji 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 dozwolonej wysokości
Czerwona ikona ograniczenia wysokości
Czerwony = Twój 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 dymek.
Mapa pokazująca naruszenie ograniczenia wysokości pojazdu
Waga Ikona ograniczenia wagi Gdy waga pojazdu przekracza limit drogi, pojawia się czerwony dymek.
Mapa z ikoną ograniczenia wagowego
Zakaz wjazdu ciężarówek Ikona zakazu wjazdu ciężarówek Gdy jedziesz odcinkiem drogi z ograniczeniami dla ciężarówek, pojawia się czerwone objaśnienie.
Mapa z ikoną zakazu wjazdu ciężarówek
Materiały niebezpieczne Ikona towarów niebezpiecznych Czerwone objaśnienie pojawia się, gdy przewóz materiałów niebezpiecznych jest zabroniony na danym odcinku drogi.
Mapa z ikoną towarów niebezpiecznych

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:

  1. Żądanie trasy: serwer backendu żąda trasy dla ciężarówki z interfejsu Routes API (lub Route Optimization API).
  2. Odbieranie tokena: interfejs API routingu oblicza zgodną trasę i zwraca routeToken do serwera backendu.
  3. Przekazywanie tokena: serwer backendu przekazuje routeToken i współrzędne 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 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 przekierowanie:

  • 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 przejazdu ciężarówką

Aby zainicjować i rozpocząć szczegółową nawigację z tokenem trasy dla dużego pojazdu, wykonaj te czynności.

Krok 1. Uzyskaj token trasy z backendu

Aplikacja mobilna otrzymuje ciąg tekstowy routeToken wraz ze współrzędnymi miejsca docelowego z serwera backendu. Więcej informacji 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. Ustaw miejsca docelowe za pomocą tokena trasy

Przekaż tabelę routeToken do metody mapView.navigatorsetDestinationsWithToken:completionHandler:. Pakiet Navigation SDK pobiera miejsca docelowe z tokena trasy wraz z profilem trasy TRUCK, który nakazuje mu stosowanie ograniczeń dotyczących dużych pojazdów. Nie musisz przekazywać punktów pośrednich. Tryb podróży w aplikacji musi być ustawiony na .driving (GMSNavigationTravelModeDriving), co jest wartością domyślną, lub .twoWheeler (GMSNavigationTravelModeTwoWheeler).

Ustaw opcje punktów orientacyjnych w żądaniu do interfejsu Routes API, które tworzy token trasy. Pakiet Navigation SDK pobiera je z tokena wraz z miejscami docelowymi. W przypadku dużych pojazdów rozważ te opcje:

  • Wyznaczanie trasy po stronie drogi: duże pojazdy komercyjne nie mogą łatwo zawracać na wąskich ulicach. Aby mieć pewność, że ciężarówka dotrze do miejsca docelowego po właściwej stronie drogi, ustaw sideOfRoad na true w punkcie na trasie miejsca docelowego.
  • Postoje pojazdu: aby skierować ciężarówkę do odpowiedniego miejsca na postój lub rozładunek, ustaw parametr vehicleStopover na true w punkcie na trasie miejsca docelowego.
  • 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 3. Obsługa stanu trasy i rozpoczęcie nawigacji

Gdy pakiet Navigation SDK zakończy obliczanie trasy, przekazuje obiekt GMSNavigationRouteDescription do modułu obsługi zakończenia. Gdy routeStatus to .OK (GMSRouteStatusOK), ustaw isGuidanceActive = true (guidanceActive = YES), aby rozpocząć aktywne szczegółowe wskazówki dojazdu.

Aby sprawdzić, czy pakiet Navigation SDK zastosował token trasy, zapoznaj się z sekcją Sprawdzanie, czy pakiet Navigation SDK zastosował token trasy.

Przykładowy kod

Przekaż token trasy do setDestinationsWithToken:completionHandler:, a następnie rozpocznij nawigację, gdy stan trasy to .OK.

// Obtain the routeToken string from your backend
let routeToken = "route token returned by Routes API"

mapView.navigator?.setDestinationsWithToken(routeToken) { [weak self] routeDescription, error in
  if routeDescription?.routeStatus == .OK {
    self?.mapView.navigator?.isGuidanceActive = true
  }
}

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 CarPlay.

Dalsze kroki