Czasami możesz chcieć zaplanować trasę, którą Twoja aplikacja ma wyświetlać użytkownikom. Korzystając z tokenu trasy z interfejsu Routes API, Routes Preferred API lub Route Optimization API, możesz określić 2 rzeczy dla zaplanowanej trasy:
Linia łamana trasy
Cele trasy
Oto przykładowe cele kierowania:
Minimalizowanie czasu dostawy: firma dostarczająca jedzenie może chcieć zminimalizować czas potrzebny na dostarczenie posiłku.
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 dojazdu do miejsca docelowego: operacja zlecenia usługi może chcieć zminimalizować czas potrzebny operatorom na dotarcie do miejsca wykonania zlecenia.
Obniżenie kosztów i poprawa bezpieczeństwa: firma transportu publicznego może chcieć: znajdź trasę tańszą dla pasażerów i omijaj określone obszary ze względów bezpieczeństwa .
Więcej informacji o planowaniu trasy z użyciem tokena trasy znajdziesz w sekcji Wysyłanie żądania token trasy Interfejs Routes API oraz przenoszenie linii łamanych i trasy Tokeny w Interfejs Route Optimization API.
Dlaczego warto używać tokenu trasy do celów związanych z trasami
Dzięki tokenowi trasy z interfejsu Routes API, Routes Preferred API lub Route Optimization API masz większą kontrolę nad podaną trasą:
Zaplanuj z wyprzedzeniem trasę, której pakiet Navigation SDK będzie używany podczas jak to tylko możliwe.
Wybierz najlepszą trasę do użycia przez pakiet SDK nawigacji. Jeśli podczas generowania tras w interfejsie Routes API żądasz tokenów trasy, otrzymasz token trasy dla każdej wygenerowanej trasy. Następnie możesz wybrać token trasy, której chcesz użyć, gdy przekażesz ją do pakietu SDK nawigacji.
Oszacuj cenę z wyprzedzeniem, w tym szacowane przybycie i odległość. Rzeczywisty koszt i czas mogą się różnić, ale to oszacowanie zmniejsza między przewidywanym a rzeczywistym kosztem trasy.
określać bardziej zaawansowane cele trasy, takie jak wyznaczanie trasy ekologicznej lub najkrótszej.
Jak działają tokeny tras
Do planowania trasy za pomocą celów trasy możesz użyć interfejsu Routes API, Routes Preferred API lub Route Optimization API. Ty mogą przekazać token trasy zwrócony z dowolnego z tych interfejsów API Pakiet SDK do nawigacji dostarcza wskazówek, jak trasa przebiega w Twoim pojeździe.
Oto, co się dzieje, gdy żądasz i używasz tokenu trasy:
Interfejsy Routes API, Routes Preferred API lub Route Optimization API zwracają zaszyfrowany token trasy, który zawiera polilinie trasy i cele trasy.
Token trasy przekazujesz do pakietu Navigation SDK.
Pakiet Navigation SDK pobiera trasę lub jeśli trasa nie jest dostępny ze względu na zmianę warunków, pobiera najlepiej pasującą trasę.
Podczas jazdy, gdy zmienią się natężenie ruchu lub inne warunki na drodze pojazd odjeżdża od zaplanowanej trasy, zmienione trasy są stale spróbuje dopasować najlepszą trasę na podstawie celów trasy podanych w tokenie.
Ten proces pozwala zmaksymalizować odległość między rzeczywistą trasą a planowaną trasą.
Dlaczego zaplanowana trasa może nie być dokładnie realizowana
Zaplanowaną trasę i cele trasy należy traktować jak wytyczne do przestrzegania: nie są wymogiem. Możesz zauważyć różnicę między zaplanowaną trasą a trasą wyświetlaną przez nawigację prowadzoną z powodu różnic w warunkach na drodze, lokalizacji początkowej lub innych parametrów, które uległy zmianie od momentu utworzenia zaplanowanej trasy. Ta różnica może spowodować rozbieżność między planowanymi a rzeczywistymi celami dotyczącymi odległości i przewidywanego czasu dojazdu, a także innymi ważnymi parametrami podróży.
Planowanie trasy za pomocą tokenu trasy
Możesz zaplanować trasę, tworząc token trasy i przekazując go do pakietu Navigation SDK zgodnie z opisem 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:
Interfejs Routes API:
computeRoutes
. Więcej informacji o wykonywaniu żądania tokenu trasy w interfejsie Routes API znajdziesz w artykułach Obliczanie trasy i Wysyłanie żądania tokenu trasy.Preferowany interfejs API tras:
computeCustomRoutes
. Więcej o żądaniu tokena trasy w sekcji Preferowany interfejs API tras. Więcej informacji znajdziesz w sekcji Planowanie .Route Optimization API:
optimizeTours
lubbatchOptimizeTours
Więcej informacji o wysyłaniu żądania tokenu trasy w interfejsie Route Optimization API znajdziesz w artykule Przechodzenie na ścieżkę wielokątną i tokeny trasy.
Skonfiguruj interfejs Routes API lub Routes Preferred API, aby spełnić wymagania dotyczące używania tokenu trasy:
- Ustaw
travel_mode
naDRIVING
lubTWO_WHEELER
- Ustaw
routing_preference
naTRAFFIC_AWARE
lubTRAFFIC_AWARE_OPTIMAL
- NIE używaj punktów na trasie
Via
- Ustaw
Krok 2. Przekaż token trasy do pakietu SDK nawigacji
Przechowuj token trasy: w pakiecie Navigation SDK skonfiguruj ciąg znaków do przechowywania tokenu trasy. Na przykład:
String routeToken = "route token returned by Routes API";
Przykład zwróconego tokenu trasy:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }
Przekazuj token trasy do pakietu SDK nawigacji za pomocą metody
Navigator.setDestinations
, podając te same punkty docelowe, które zostały użyte podczas tworzenia tokenu 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, zwróci wartość 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ą token 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 współdziałają tokeny kierowania z pakietem SDK Navigation
Trasa wygenerowana przez pakiet Navigation SDK oraz planowana trasa w tokenie trasy:
Zastępuje wszystkie wcześniej ustawione miejsca docelowe.
Używa lokalizacji początkowej pojazdu.
Dostosowanie do warunków drogowych i ruchu. Zobacz Dlaczego zaplanowana trasa może nie być dokładnie przemierzona.
Ignoruje te opcje związane z przekierowywaniem, ponieważ są niepotrzebne:
avoidsHighways
avoidsTolls
avoidsFerries
licensePlateRestriction
Obserwatorzy:
Opcje związane z punktami pośrednimi, takie jak preferencja pobocznej drogi.
Cele dotyczące tras. Jeśli pakiet SDK Nawigacji musi dostosować zwróconą trasę, używa do tego celów trasy określonych podczas żądania tokenu trasy. Z tego powodu należy używać tych samych opcji dotyczących punktów pośrednich, które zostały określone w interfejsie Routes API.