Zaplanuj trasę

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 dla trasy

  • Cele dotyczące trasy

Oto przykładowe cele kierowania, które możesz stosować:

  • Minimalizowanie czasu dostawy: firma oferująca dostawę jedzenia 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żka kosztów i zwiększenie bezpieczeństwa: firma oferująca usługi przewozu osób może chcieć znaleźć trasę, która jest tańsza dla pasażerów i nie prowadzi przez niektóre obszary ze względów bezpieczeństwa.

Więcej informacji o planowaniu trasy za pomocą tokenu trasy znajdziesz w artykule Wysyłanie żądania dotyczącego tokenu trasy w interfejsie Routes API oraz w artykule Przechodzenie na ścieżkę wieloliniową i tokeny trasy w interfejsie 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 trasę z wyprzedzeniem, aby pakiet Navigation SDK mógł ją wykorzystać, gdy to możliwe.

  • Wybierz najlepszą trasę dla pakietu Navigation SDK. 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 przybliżone przybycie i odległość. Rzeczywisty koszt i czas mogą się różnić, ale dzięki tej ocenie zmniejsza się różnica między oczekiwanym 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. Do pakietu SDK Nawigacji możesz przekazać token trasy z dowolnego z tych interfejsów API, aby określić, jak ma on wyznaczać trasę dla pojazdu.

Oto, co się dzieje, gdy żądasz i używasz tokenu trasy:

  1. Interfejsy Routes API, Routes Preferred API lub Route Optimization API zwracają zaszyfrowany token trasy, który zawiera polilinie trasy i cele trasy.

  2. Token trasy przekazujesz do pakietu Navigation SDK.

  3. Pakiet SDK nawigacji pobiera trasę, a jeśli nie jest ona dostępna z powodu zmieniających się warunków, pobiera najlepszą dostępną trasę.

  4. Podczas przejazdu, jeśli zmieni się natężenie ruchu lub inne warunki drogowe albo pojazd zboczy z planowanej trasy, zmodyfikowane trasy będą stale próbować dopasować się do najlepszej trasy na podstawie celów trasy w tokenie.

Dzięki temu procesowi rzeczywista trasa będzie jak najbardziej zbliżona do zaplanowanej.

Dlaczego zaplanowana trasa może nie być dokładnie podążana

Planowaną trasę i jej cele traktuj jako wskazówki: nie są one wiążące. Możesz zauważyć różnicę między zaplanowaną trasą a trasą wyświetlaną przez nawigację przewodnikową z powodu różnic w warunkach drogowych, lokalizacji początkowej lub innych parametrów, 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 odległości i szacowanego 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 w ten sposób:

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:

    • Interfejs API tras: computeRoutes. Więcej informacji o prośbach o token trasy w interfejsie Routes API znajdziesz w artykułach Obliczanie trasyProśba o token trasy.

    • Routes Preferred API: computeCustomRoutes. Więcej informacji o prośbach o token trasy w interfejsie Routes Preferred API znajdziesz w artykule Planowanie trasy.

    • Route Optimization API: optimizeTours lub batchOptimizeTours. Więcej informacji o wysyłaniu żądania tokena trasy w interfejsie Route Optimization API znajdziesz w artykule Przejście na ścieżkę wielokątną i tokeny trasy.

  2. Skonfiguruj interfejs Routes API lub Routes Preferred API, aby spełnić wymagania dotyczące używania tokenu trasy:

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

Krok 2. Przekaż token trasy do Navigation SDK

  1. 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",
    }
    
  2. Przekazuj 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 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ą 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);

Interakcje tokenów trasy z pakietem Navigation SDK

Oto jak interakcja trasy wygenerowanej przez Navigation SDK i planowanej trasy w tokenie trasy:

  • Zastępuje wszystkie wcześniej ustawione miejsca docelowe.

  • Używa lokalizacji początkowej pojazdu.

  • Dostosowanie do warunków na drodze i na drodze. Dowiedz się, dlaczego samochód może nie jechać dokładnie wyznaczoną trasą.

  • Ignoruje te opcje związane z przekierowywaniem, ponieważ są niepotrzebne:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Obserwuje:

    • Opcje związane z punktami orientacyjnymi, np. preferencja dotycząca strony 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.