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 Ci określić 2 rzeczy dotyczące planowanej trasy:
linii łamanej trasy,
celów trasy.
Oto kilka przykładów celów mechanizmu planowania trasy:
Skrócenie czas dostawy: firma dostarczająca jedzenie może chcieć skrócić czas dostawy.
Skrócenie czasu podróży lub zmniejszenie zużycia paliwa: firma logistyczna może chcieć zwiększyć wydajność kierowców i obniżyć koszty paliwa.
Skrócenie czasu dotarcia do miejsca docelowego: firma świadcząca usługi może chcieć skrócić czas dotarcia operatorów do miejsca realizacji zlecenia.
Niższe koszty i większe bezpieczeństwo: firma oferująca wspólne przejazdy może chcieć znaleźć trasę, która jest tańsza dla pasażerów i ze względów bezpieczeństwa omija określone obszary.
Więcej informacji o planowaniu trasy za pomocą tokena trasy znajdziesz w artykule Pobieranie tokena trasy w Routes API oraz Przejście na linie łamane i tokeny trasy w Route Optimization API.
Dlaczego warto używać tokena trasy do określania celów trasy
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ć.
Wybieranie najlepszej trasy do użycia przez pakiet Navigation SDK. Jeśli podczas generowania tras w interfejsie Routes API poprosisz o tokeny trasy, otrzymasz token dla każdej wygenerowanej trasy. Następnie możesz wybrać token trasy, której chcesz użyć, i przekazać go do pakietu SDK Navigation.
oszacować cenę z góry, w tym szacowany czas dotarcia na miejsce i odległość; 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.
Jak działają tokeny trasy
Do planowania trasy z uwzględnieniem celów możesz używać interfejsów 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ć, jak ma on wyznaczać trasę 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.
Przekazujesz token trasy do pakietu Navigation SDK.
Pakiet Navigation SDK rozpoczyna nawigację po zaplanowanej trasie, nawet jeśli dostępna jest szybsza trasa.
Jeśli podczas podróży zmienią się warunki drogowe lub natężenie ruchu albo pojazd zjedzie z zaplanowanej trasy, pakiet Navigation SDK obliczy nową trasę, która będzie zgodna z celami i opcjami wyznaczania trasy ustawionymi w tokenie trasy.
Dzięki temu rzeczywista trasa jest jak najbardziej zbliżona do zaplanowanej.
Dlaczego zaplanowana trasa może nie zostać dokładnie przejechana
Nawigacja rozpoczyna się na zaplanowanej trasie, ale rzeczywista trasa może się od niej różnić w takich sytuacjach:
- Pojazd rozpoczyna jazdę z dala od zaplanowanego punktu początkowego.
- W trakcie podróży zmieniają się warunki drogowe lub natężenie ruchu.
- Pojazd opuszcza zaplanowaną trasę.
Te różnice mogą wpływać na odległość, szacowany czas dotarcia na miejsce i inne ważne parametry zaplanowanej podróży.
Planowanie trasy za pomocą tokena trasy
Możesz zaplanować trasę, tworząc token trasy, a następnie przekazując go do pakietu Navigation SDK, jak opisano w tych krokach:
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 Uzyskiwanie tokena trasy.Routes Preferred API:
computeCustomRoutes. Więcej informacji o wysyłaniu żądań tokena trasy w interfejsie Routes Preferred API znajdziesz w artykule Planowanie trasy.Route Optimization API:
optimizeTourslubbatchOptimizeTours. Więcej informacji o wysyłaniu żądań tokena trasy w interfejsie Route Optimization API znajdziesz w artykule Przejście na linie łamane i tokeny trasy.
Skonfiguruj żądanie do Routes API lub Routes Preferred API, aby spełnić wymagania dotyczące korzystania z tokena trasy:
- Ustaw
travelModenaDRIVElubTWO_WHEELER. - Ustaw
routingPreferencenaTRAFFIC_AWARElubTRAFFIC_AWARE_OPTIMAL. - Nie używaj
Viapunktów pośrednich.
- Ustaw
Krok 2. Przekaż token trasy do pakietu Navigation SDK
Przechowywanie tokena trasy: w Navigation SDK skonfiguruj ciąg znaków do przechowywania tokena 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 orientacyjne miejsca docelowego, 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, zwraca RouteStatus.OK.
Więcej informacji o tej metodzie znajdziesz w artykule Navigator.setDestinations.
Przykład
Poniższy przykładowy kod 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 Navigation SDK wchodzą ze sobą w interakcje
Oto jak Navigation SDK obsługuje zaplanowaną trasę:
Zastępuje wszystkie wcześniej ustawione miejsca docelowe.
wykorzystuje lokalizację początkową pojazdu;
Dostosowuje się do warunków na drodze i natężenia ruchu. Zobacz Dlaczego zaplanowana trasa może nie zostać dokładnie przejechana.
Używa opcji wyznaczania trasy ustawionych w tokenie trasy zamiast tych ustawień w aplikacji, w tym podczas obliczania nowej trasy w trakcie podróży:
RoutingOptions.avoidHighways()RoutingOptions.avoidTolls()RoutingOptions.avoidFerries()Navigator.setLicensePlateRestrictionInfo()- tryb podróży ustawiony w aplikacji,
Uwzględnia te ustawienia podczas obliczania lub dostosowywania trasy:
Cele trasy z tokena trasy, takie jak trasa ekologiczna lub najkrótsza trasa. Jeśli pakiet SDK Navigation musi dostosować trasę, używa celów trasy określonych podczas wysyłania żądania tokena trasy.
Opcje związane z punktami orientacyjnymi z aplikacji, takie jak preferencje dotyczące strony drogi. Użyj tych samych opcji związanych z punktami pośrednimi, które zostały określone podczas żądania tokena trasy.