Zaplanuj trasę

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:

  1. Interfejs Routes API, Routes Preferred API lub Route Optimization API zwraca zaszyfrowany token trasy, który zawiera linię łamaną trasy i cele trasy.

  2. Token trasy przekazujesz do pakietu Navigation SDK.

  3. Pakiet Navigation SDK pobiera trasę lub, jeśli nie jest ona dostępna z powodu zmieniających się warunków, pobiera najlepiej dopasowaną trasę.

  4. 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

  1. 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 trasyWysył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 lub 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.

  2. Skonfiguruj żądanie interfejsu Routes API lub Routes Preferred API, aby spełniało wymagania dotyczące używania tokena trasy:

    • Ustaw wartość travel_mode na DRIVING lub TWO_WHEELER
    • Ustaw wartość routing_preference na TRAFFIC_AWARE lub TRAFFIC_AWARE_OPTIMAL
    • NIE używaj Via punktów trasy.

Krok 2. Przekaż token trasy do Navigation SDK

  1. 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",
    }
    
  2. 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.