Gdy pobierzesz dane o podróży, Twój backend otrzyma ładunki JSON zawierające szczegółowe informacje o postępach kierowcy w podróży. Analizuj te ładunki, aby monitorować przejazd, aktualizować systemy wysyłkowe i interpretować bieżące stany przejazdu, aby określić następny krok dla kierowcy w trakcie przejazdu lub po jego zakończeniu.
Odczytywanie ładunku danych
Mapy Google lub Waze wysyłają pakiety danych o podróży na serwery Navigation Connect, gdy kierowca rozpoczyna nawigację, okresowo w trakcie podróży (domyślnie co 60 sekund) oraz gdy dociera do miejsca docelowego. Każda wiadomość JSON zawiera odpowiednie dane o podróży, w tym współrzędne kierowcy połączone z drogą, pokonany dystans i szacowany czas dotarcia na miejsce (ETA). Ponieważ te aktualizacje odzwierciedlają aktywną trasę kierowcy w czasie rzeczywistym, mogą się różnić od tras wstępnie obliczonych przez Twój backend (patrz FAQ).
Poniższy przykładowy kod pokazuje ładunek danych o podróży, gdy kierowca rozpoczyna nawigację podczas przejazdu z King's Cross do Central St. Giles.
{
"name": "projects/123456/trips/221B9CD6-4146-4CBF-9556-853817654938",
"state": "ENROUTE",
"execution": {
"origin": {
"point": {
"latitude": 51.5333329,
"longitude": -0.1265845
}
},
"destination": {
"point": {
"latitude": 51.515598,
"longitude": -0.1277623
}
},
"location": {
"point": {
"latitude": 51.5333329,
"longitude": -0.1265845
},
"sourceTime": "2025-05-30T12:37:26Z",
"serverTime": "2025-05-30T12:37:26.221069Z"
},
"traveledDuration": "0s",
"remainingDuration": "990s",
"traveledDistanceMeters": 0,
"remainingDistanceMeters": 2879,
"stopAddedInRoute": false
}
}
Monitorowanie stanu aktywnych przejazdów
Aby potwierdzić, że uruchomienie się powiodło, i monitorować postępy, sprawdź pole state w każdym ładunku.
| Stan | Opis |
|---|---|
NEW |
Przejazd został utworzony, ale kierowca nie rozpoczął jeszcze nawigacji. |
ENROUTE |
Kierowca aktywnie nawiguje do miejsca docelowego. Użyj tego stanu, aby potwierdzić, że przejazd został uwierzytelniony i rozpoczął się prawidłowo. |
Obsługa dodanych przystanków
Kierowcy mogą dodawać przystanki do trasy podczas nawigacji. Jeśli tak jest, Navigation Connect ustawia pole execution.stopAddedInRoute na true w ładunku danych JSON. Interfejs Navigation Connect API
nadal śledzi kierowcę w kierunku pierwotnego miejsca docelowego. Dane takie jak szacowany czas dotarcia na miejsce, odległość i czas trwania zwiększają się, aby uwzględnić dodane przystanki.
Sposób dodawania przystanków zależy od aplikacji do nawigacji i jest zgodny z jej standardową funkcjonalnością:
- Mapy Google: kierowcy mogą dodawać do trasy wiele przystanków.
- Waze: kierowcy mogą dodać tylko 1 przystanek. Jeśli kierowca spróbuje dodać kolejny przystanek, Waze poprosi go o rozpoczęcie nowej sesji nawigacji zamiast dodawania przystanku do bieżącej trasy.
Aby obsługiwać tę funkcję, nie musisz dostosowywać danych wejściowych backendu.
Rozwiązywanie problemów z uwierzytelnianiem i uruchamianiem
Jeśli nie otrzymasz stanu ENROUTE, prawdopodobnie wystąpił błąd uwierzytelniania. Typowe przyczyny to m.in. błędnie napisane parametry interfejsu API lub wygaśnięcie tokena podróży. Sprawdź czas wygaśnięcia tokena w początkowej odpowiedzi CreateTrip.
Jeśli stan nie zmieni się z NEW na ENROUTE, urządzenie kierowcy może uniemożliwiać uwierzytelnianie. W takich przypadkach Navigation Connect nie wysyła komunikatów o błędach. Sprawdź te kwestie:
- Kierowca ma zainstalowaną aplikację Waze w wersji 5.15.5 lub nowszej albo Mapy Google w wersji 26.14 lub nowszej.
- Kierowca nie korzysta z Androida Auto ani Apple CarPlay.
- Kierowca ma aktywne połączenie z internetem.
Obsługa pozostałych danych trasy (tylko Waze)
Jeśli podczas tworzenia przejazdu włączysz raportowanie pozostałej części trasy, Twój backend będzie otrzymywać polilinię pozostałej części trasy i informacje o natężeniu ruchu w czasie rzeczywistym od bieżącej lokalizacji kierowcy do miejsca docelowego.
Możesz pozyskiwać i przetwarzać te dane, aby korzystać z różnych funkcji w aplikacjach, np. z tych:
- Zasilanie map śledzenia na żywo: renderowanie pozostałej części trasy na mapie internetowej lub mobilnej widocznej dla klienta, aby zapewnić wgląd w podróż kierowcy.
- Zwiększanie dokładności szacowanego czasu dotarcia na miejsce: połączenie polilinii dopasowanej do drogi i prędkości w interwałach ruchu, aby poprawić wewnętrzną logistykę lub prognozy czasu dotarcia dostawy.
- Analizowanie zgodności z wyznaczaniem trasy: porównaj pozostałą geometrię trasy z oczekiwanymi trasami przejazdu, aby ocenić, czy kierowca się do nich stosuje (szczegółowe informacje o tym, dlaczego trasy w czasie rzeczywistym i wcześniej obliczone mogą się różnić, znajdziesz w sekcji z odpowiedziami na najczęstsze pytania).
Navigation Connect zwraca pozostałe szczegóły trasy w polu execution.remainingRoute, niezależnie od tego, czy wysyłasz żądanie GetTrip, czy otrzymujesz aktualizacje oparte na zdarzeniach za pomocą Google Cloud Pub/Sub. Sposób formatowania i strukturyzowania tych danych w ładunku zależy jednak od używanej metody pobierania.
GetTrip metoda
Gdy wywołasz metodę GetTrip, format odpowiedzi dla linii łamanej zależy od parametru routePolylineFormat określonego w żądaniu. Więcej informacji znajdziesz w sekcji Dostosowywanie formatów linii łamanych.
W przypadku wszystkich formatów linii łamanych Navigation Connect zwraca informacje o ruchu jako osobną listę obiektów
SpeedReadingInterval
w polu
execution.remainingRoute.trafficInformation. Te obiekty mapują kategorie ruchu na indeksy linii łamanych za pomocą tych wartości:
startPolylinePointIndex: Indeks początkowy przedziału ruchu na linii łamanej.endPolylinePointIndex: indeks końcowy przedziału ruchu.speed: Kategoria ruchu w tym segmencie:NORMAL,SLOWlubTRAFFIC_JAM.
Aktualizacje Google Cloud Pub/Sub
Gdy pobierasz dane o podróży za pomocą Pub/Sub, aktualizacje zawsze zwracają pozostałe dane trasy w ujednoliconym formacie GeoJSONFeatureCollection w poluexecution.remainingRoute.
Ten format łączy geometrię linii łamanej bezpośrednio z prędkościami ruchu, eliminując potrzebę ręcznego mapowania indeksów.
Zobacz przykładowy ładunek Pub/Sub
Poniższy przykładowy kod pokazuje strukturę GeoJSON zwróconą w polu execution.remainingRoute w obiekcie updatedTrip wiadomości Pub/Sub:
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [-122.3934, 37.7955], [-122.4010, 37.7980] ] }, "properties": { "speed": "SLOW" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [-122.4010, 37.7980], [-122.4058, 37.8025], [-122.4187, 37.8021] ] }, "properties": { "speed": "NORMAL" } } ] }
Optymalizowanie rozmiaru ładunku
Tablice współrzędnych są duże, więc uwzględnianie w wiadomościach Pub/Sub pozostałych danych o trasie może znacznie zwiększyć rozmiar ładunku (nawet do 13–14 KB na wiadomość). Jeśli otrzymujesz aktualizacje o wysokiej częstotliwości, ta ilość może zwiększyć obciążenie przetwarzania backendu i koszty użytkowania.
Aby zoptymalizować strumień, podczas tworzenia przejazdu użyj parametru
pubsubFieldMask
w obiekcie TripConfig
, aby wykluczyć duże pola. Więcej informacji znajdziesz w sekcji Opcjonalne konfiguracje.
Obsługa odchyleń od trasy (tylko Waze)
Jeśli podczas tworzenia podróży włączysz raportowanie odchyleń od trasy, gdy kierowca zjedzie z trasy, interfejs API zwróci metadane odchyleń od trasy. Dostęp do tych danych możesz uzyskać w ten sposób:
- Na żądanie: wywołaj metodę
GetTrip. Serwer zachowuje ostatni znany stan odchylenia. - W czasie rzeczywistym: subskrybuj Google Cloud Pub/Sub. Usługa publikuje aktualizacje odchyleń za pomocą istniejącego zdarzenia
updated_tripw ciągu 5 sekund od wykrycia.
Odczytywanie ładunku odchylenia
Obiekt last_route_deviation zawiera te metadane, które ułatwiają analizowanie zdarzenia:
| Pole | Typ | Opis |
|---|---|---|
location |
LatLng |
Współrzędne szerokości i długości geograficznej, w których urządzenie klienta zarejestrowało odchylenie. |
source |
TriggerSource |
Powód odchylenia. Użyj tego, aby określić, czy kierowca wykonał nieoczekiwane działanie lub postępował zgodnie z wskazówkami systemu:
|
client_timestamp |
Timestamp |
Czas, w którym urządzenie klienta wykryło odchylenie. |
server_timestamp |
Timestamp |
Czas, w którym serwer przetworzył aktualizację odchylenia. |
Obsługa stanów zakończenia przejazdu
Gdy kierowca dotrze do miejsca docelowego lub przestanie korzystać z nawigacji, ładunek zwróci jeden z tych stanów końcowych: Używaj tych stanów, aby wywoływać odpowiednie kolejne kroki w aplikacji.
| Stan | Opis | Zalecane działanie |
|---|---|---|
ARRIVED |
Kierowca dotarł do miejsca docelowego. | Zapoznaj się z: remainingDistanceMeters Jeśli kierowca zaparkował w pobliżu, ale nie w dokładnych współrzędnych, rozważ podanie w aplikacji wskazówek dotyczących dojścia pieszo. |
SUSPENDED |
Kierowca ręcznie zamknął szczegółowe wskazówki dojazdu przed dotarciem do miejsca docelowego. Gdy kierowca przedwcześnie zakończy sesję, Mapy Google lub Waze nie przekierują go automatycznie z powrotem do Twojej aplikacji. Musi on ręcznie kliknąć przycisk powrotu. |
Aby pomóc kierowcom w ukończeniu przejazdu, porównaj execution.location z celem podróży. Jeśli pozostała odległość, udostępnij przycisk lub link umożliwiający wznowienie podróży lub przejście do
trybu pieszego. |
FAILED |
Połączenie zostało przerwane z powodu błędu technicznego. Dzieje się tak, gdy aplikacja nie może obliczyć trasy lub pojawia się ostrzeżenie dotyczące bezpieczeństwa. Kierowca może nadal korzystać z nawigacji, ale nie będziesz otrzymywać aktualizacji. | Wróć do ręcznego śledzenia stanu w aplikacji. |
CLIENT_ERROR |
Ten stan pojawia się z jednego z tych powodów:
|
Wróć do ręcznego śledzenia stanu w aplikacji. |