Czasami możesz chcieć zaplanować trasę, którą aplikacja ma 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 na dotarcie operatorów do miejsca wykonania zlecenia. 
- 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 poprosisz o tokeny 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ć 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ć 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 trasa jest niedostę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 próbować dopasować się do najlepszej trasy na podstawie celów trasy 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.
Scenariusze z wieloma przystankami
Scenariusze z wieloma przystankami
Metoda setDestinations nie obsługuje podróży z wieloma przystankami. Użyj continueToNextDestination(), aby przejść do następnego etapu podróży.
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: - computeRoutesWię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: - computeCustomRoutesWięcej informacji o żądaniu tokena trasy w interfejsie Routes Preferred API znajdziesz w artykule Planowanie trasy.
- Route Optimization API: - optimizeTourslub- batchOptimizeTours. 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_modenaDRIVINGlubTWO_WHEELER
- Ustaw wartość routing_preferencenaTRAFFIC_AWARElubTRAFFIC_AWARE_OPTIMAL
- NIE używaj Viapunktów orientacyjnych.
 
- Ustaw wartość 
Krok 2. Przekaż token trasy do pakietu 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 tras 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 zostać dokładnie przejechana. 
- 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.