Czasami możesz chcieć zaplanować trasę, którą aplikacja udostępnia użytkownikom. Użycie tokena trasy z interfejsu Routes API, Routes Preferred API lub Route Optimization API może pomóc w określeniu 2 rzeczy w przypadku planowanej trasy:
linię łamaną trasy,
cele trasy,
Oto kilka przykładów celów routingu:
Skróć czas dostawy: firma dostarczająca jedzenie może chcieć skrócić czas dostawy.
Minimalizowanie czasu podróży lub zużycia paliwa: firma logistyczna może chcieć zwiększyć wydajność kierowców i obniżyć koszty paliwa.
Minimalizowanie czasu dotarcia do miejsca docelowego: operacja wysyłania usługi może mieć na celu zminimalizowanie czasu potrzebnego operatorom na dotarcie do miejsca, w którym należy wykonać zlecenie.
Obniżanie kosztów i zwiększanie bezpieczeństwa: firma oferująca przejazdy może chcieć znaleźć trasę, która będzie tańsza dla pasażerów i będzie omijać określone obszary ze względów bezpieczeństwa.
Więcej informacji o planowaniu trasy za pomocą tokena trasy znajdziesz w sekcji Żądanie tokena trasy w interfejsie Routes API oraz w sekcji Przejścia między liniami łamanymi a tokenami trasy w interfejsie Route Optimization API.
Dlaczego warto używać tokena trasy w przypadku celów związanych z trasą
Dzięki tokenowi trasy z interfejsu Routes API, Routes Preferred API lub Route Optimization API masz większą kontrolę nad podaną trasą:
Zaplanuj trasę z wyprzedzeniem, aby pakiet Navigation SDK mógł z niej korzystać, gdy będzie to możliwe.
Wybieranie najlepszej trasy do użycia przez pakiet Navigation SDK Jeśli podczas generowania tras w interfejsie Routes API zażądasz tokenów trasy, otrzymasz token trasy dla każdej wygenerowanej trasy. Następnie możesz wybrać token trasy, której chcesz użyć, i przekazać go do pakietu SDK Navigation.
Szacowanie ceny z wyprzedzeniem, w tym szacowanie czasu dotarcia i odległości. Rzeczywisty koszt i czas mogą się różnić, ale to oszacowanie zmniejsza różnicę między oczekiwanym a rzeczywistym kosztem trasy.
Określ bardziej zaawansowane cele trasy, takie jak trasa ekologiczna lub najkrótsza trasa.
Jak działają tokeny trasy
Do planowania trasy z użyciem celów trasy możesz używać interfejsu Routes API, Routes Preferred API lub Route Optimization API. Możesz przekazać token trasy zwrócony przez dowolny z tych interfejsów API do pakietu Navigation SDK, aby określić sposób wyznaczania trasy dla pojazdu.
Oto co się dzieje, gdy poprosisz o token trasy i go użyjesz:
Interfejs Routes API, Routes Preferred API lub Route Optimization API zwraca zaszyfrowany token trasy, który zawiera linię łamaną trasy i cele trasy.
Token trasy przekazujesz do pakietu Navigation SDK.
Pakiet Navigation SDK pobiera trasę lub, jeśli nie jest ona dostępna z powodu zmieniających się warunków, pobiera najlepiej dopasowaną trasę.
Podczas jazdy, jeśli natężenie ruchu lub inne warunki drogowe ulegną zmianie albo pojazd zboczy z zaplanowanej trasy, zmodyfikowane trasy będą stale dopasowywane do najlepszej trasy na podstawie celów trasy określonych w tokenie.
Ten proces maksymalizuje podobieństwo rzeczywistej trasy do zaplanowanej.
Dlaczego zaplanowana trasa może nie być dokładnie taka sama
Planowana trasa i cele trasy to tylko wytyczne, których nie musisz się ściśle trzymać. Może wystąpić różnica między zaplanowaną trasą a trasą podaną przez nawigację głosową ze względu na różnice w warunkach drogowych, lokalizacji początkowej lub innych parametrach, które uległy zmianie od czasu utworzenia zaplanowanej trasy. Ta różnica może powodować rozbieżności między planowanymi a rzeczywistymi celami dotyczącymi m.in. odległości i szacowanego czasu przyjazdu.
Planowanie trasy za pomocą tokena trasy
Aby zaplanować trasę, utwórz token trasy, a następnie przekaż go do pakietu Navigation SDK, wykonując te czynności:
Krok 1. Utwórz token trasy za pomocą interfejsu Routes API, Routes Preferred API lub Route Optimization API
Poproś o token trasy, korzystając z jednej z tych metod:
Routes API:
computeRoutes
Więcej informacji o wysyłaniu żądań tokena trasy w interfejsie Routes API znajdziesz w artykułach Obliczanie trasy i Wysyłanie żądania tokena trasy.Routes Preferred API:
computeCustomRoutes
Więcej informacji o żądaniu tokena trasy w interfejsie Routes Preferred API znajdziesz w artykule Planowanie trasy.Route Optimization API:
optimizeTours
lubbatchOptimizeTours
. Więcej informacji o wysyłaniu żądań tokena trasy w interfejsie Route Optimization API znajdziesz w artykule Przejście na polilinie i tokeny trasy.
Skonfiguruj żądanie interfejsu Routes API lub Routes Preferred API, aby spełniało wymagania dotyczące używania tokena trasy:
- Ustaw wartość
travel_mode
naDRIVING
lubTWO_WHEELER
- Ustaw wartość
routing_preference
naTRAFFIC_AWARE
lubTRAFFIC_AWARE_OPTIMAL
- NIE używaj
Via
punktów trasy.
- Ustaw wartość
Krok 2. Przekaż token trasy do Navigation SDK
Zapisz token trasy: w pakiecie Navigation SDK skonfiguruj ciąg znaków, w którym będzie przechowywany token trasy. Na przykład:
String routeToken = "route token returned by Routes API";
Przykład zwróconego tokena trasy:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }
Przekaż token trasy do pakietu Navigation SDK za pomocą metody
Navigator.setDestinations
, podając te same punkty docelowe, które zostały użyte podczas tworzenia tokena trasy:setDestinations(List
destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions); Na przykład:
CustomRoutesOptions customRoutesOptions = CustomRoutesOptions.builder() .setRouteToken(routeToken) .setTravelMode(TravelMode.DRIVING) .build();
Metoda Navigator.setDestinations
zwraca stan żądania. Jeśli znajdzie trasę z lokalizacji pojazdu do podanego miejsca docelowego, zwracaRouteStatus.OK
.
Więcej informacji o tej metodzie znajdziesz w sekcji Navigator.setDestinations
.
Przykład
Poniższy przykład kodu pokazuje, jak określić zaplanowaną trasę za pomocą tokena trasy.
ArrayList <Waypoint> destinations = Lists.newArrayList();
Waypoint waypoint1 =
Waypoint.builder()
.setLatLng(10, 20)
.setTitle("title")
.setVehicleStopover(true)
.build();
destinations.add(waypoint1);
Waypoint waypoint2 =
Waypoint.builder()
.setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
.setTitle("title")
.setVehicleStopover(true)
.build()
destinations.add(waypoint2);
String routeToken = "route token returned by Routes API";
CustomRoutesOptions customRoutesOptions =
CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(TravelMode.DRIVING)
.build();
// Existing flow to get a Navigator.
NavigationApi.getNavigator(...);
// Existing flow for requesting routes.
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions);
// Or with display options.
DisplayOptions displayOptions = new DisplayOptions();
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions, displayOptions);
Jak tokeny trasy i pakiet Navigation SDK współpracują ze sobą
Oto jak trasa wygenerowana przez Navigation SDK i zaplanowana trasa w tokenie trasy wchodzą ze sobą w interakcję:
Zastępuje wszystkie wcześniej ustawione miejsca docelowe.
Korzysta z lokalizacji początkowej pojazdu.
Dostosowuje się do warunków na drodze i natężenia ruchu. Zobacz Dlaczego zaplanowana trasa może nie być dokładnie taka sama.
Ignoruje te opcje związane z routingiem, ponieważ są niepotrzebne:
avoidsHighways
avoidsTolls
avoidsFerries
licensePlateRestriction
Obserwatorzy:
Opcje związane z punktem pośrednim, np. preferowana strona drogi.
Cele trasy Jeśli pakiet Navigation SDK musi dostosować zwróconą trasę, używa celów trasy określonych podczas wysyłania żądania tokena trasy. Z tego powodu należy używać tych samych opcji związanych z punktami pośrednimi, które zostały określone w interfejsie Routes API.