Zaplanuj trasę

Czasami możesz chcieć zaplanować trasę, jaką Twoja aplikacja dociera do użytkowników. Za pomocą z interfejsu Routes API (lub preferowanego interfejsu Routes Preferred API). dwie rzeczy dla planowanej trasy:

  • Linia łamana trasy

  • Cele trasy

Oto kilka przykładów celów kierowania:

  • Minimalizowanie czasu dostawy: firma dostarczająca jedzenie może chcieć ograniczyć do minimum ile czasu zajmuje dostarczenie jedzenia.

  • Minimalizowanie czasu podróży i zużywania paliwa: firma logistyczna może chcieć poprawa wydajności kierowców i obniżenie kosztów paliwa.

  • Zminimalizuj czas do celu: do wykonania operacji wysyłania usługi do skrócenia czasu potrzebnego na uzyskanie operatorów w żądaniu zadania.

  • Niższe koszty i większe bezpieczeństwo: firmy oferujące wspólne przejazdy mogą chcieć trasa tańsza dla pasażerów i omijająca określone obszary ze względów bezpieczeństwa. .

Więcej informacji o planowaniu trasy z użyciem tokena trasy znajdziesz w artykule Wyślij prośbę o token trasy.

Dlaczego warto używać tokena trasy w celach związanych z trasą

Token trasy z preferowanego interfejsu API tras lub tras zapewnia większą jaka trasa będzie przebiegać:

  • Zaplanuj z wyprzedzeniem trasę, z której będzie korzystać pakiet Navigation SDK. jeśli to możliwe.

  • Wybierz najlepszą trasę do użycia przez pakiet SDK nawigacji. Jeśli zażądasz tokenów tras podczas generowania tras w interfejsie Routes API, otrzymasz token trasy dla każdej wygenerowanej trasy. Następnie możesz wybrać token na wybraną trasę. Pakiet SDK do nawigacji.

  • Oszacuj cenę z wyprzedzeniem, 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 spodziewanego i rzeczywistego kosztu trasy.

  • określać bardziej zaawansowane cele, takie jak wyznaczanie tras ekologicznych czy najkrótsza trasa .

Jak działają tokeny tras interfejsu Routes API

Możesz używać interfejsu Routes API lub Preferowanego interfejsu Routes API aby zaplanować trasę za pomocą celów związanych z trasą. Interfejs Routes API zwraca błąd token trasy, który można przekazać do pakietu Navigation SDK, aby wskazać, kieruje pojazdem.

Oto, co się dzieje, gdy wysyłasz prośbę o token trasy i go używasz z Interfejs Routes API:

  1. Interfejs Routes API zwraca zaszyfrowany token trasy, który zawiera trasę. celów linii łamanej i trasy.

  2. Token trasy przekazujesz do pakietu Navigation SDK.

  3. Pakiet Navigation SDK pobiera trasę lub jeśli trasa nie jest dostępne ze względu na zmieniające się warunki, pobiera najlepsze dopasowanie .

  4. jeśli podczas jazdy trasą 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 zostać dokładnie przemierzona

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ą trasa wyznaczona w ramach nawigacji z powodu różnic na drodze warunków, lokalizacji początkowej lub innych parametrów, które uległy zmianie od utworzył zaplanowaną trasę. Ta różnica może powodować niezgodność między planowane i rzeczywiste cele związane z odległością i szacowanym czasem dotarcia na miejsce i odtwarzania.

Planowanie trasy z użyciem tokena 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ą preferowanego interfejsu API tras lub tras

  1. Wyślij żądanie tokena trasy, korzystając z jednej z tych metod:

    • Interfejs Routes API: computeRoutes. Więcej informacji na temat: żądania tokena trasy w interfejsie Routes API, zobacz Obliczanie trasy oraz Wyślij prośbę o token trasy.

    • Preferowany interfejs API tras: computeCustomRoutes. Więcej informacji na temat: żądania tokena trasy w preferowanym interfejsie Routes Preferred API, Zaplanuj trasę.

  2. Skonfiguruj prośbę o trasę, aby spełnić wymagania korzystania z trasy. token:

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

Krok 2. Przekaż token trasy do pakietu Navigation SDK

  1. Przechowywanie tokena trasy: w pakiecie 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",
    }
    
  2. Przekaż token trasy do pakietu Navigation SDK za pomocą Metoda Navigator.setDestinations, określająca to samo miejsce docelowe punkty pośrednie użyte podczas tworzenia tokena trasy:

    setDestinations(List destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

    Na przykład:

    CustomRoutesOptions customRoutesOptions =
          CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .build();

Metoda Navigator.setDestinations zwraca stan żądania. Jeśli znajdzie trasę z lokalizacji pojazdu do danego 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ą 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(CustomRoutesOptions.TravelMode.TWO_WHEELER)
          .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 pojazdu.

  • Dostosowuje do warunków na drodze i natężeniu ruchu. Zobacz Dlaczego zaplanowana trasa może nie być dokładnie przemierzona.

  • Ignoruje te opcje związane z routingiem jako niepotrzebne:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Obserwatorzy:

    • Opcje związane z punktami pośrednimi, takie jak preferencja pobocznej drogi.

    • Cele trasy. Jeśli pakiet Navigation SDK musi i dostosuje zwróconą trasę, użyjemy celów trasy określonych podczas żądania tokena trasy. Z tego powodu należy użyć tego samego opcje związane z punktami pośrednimi określone w interfejsie Routes API.