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 spodziewany i rzeczywisty koszt 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 trasy. 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ępnych ze względu na zmieniające się warunki pobiera najlepsze dopasowanie .

  4. gdy podczas jazdy trasą zmienia się natężenie ruchu lub inne warunki na drodze, pojazd odbiega 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. Poproś o token 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:

    let 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 mapView.navigator setDestinations, określająca to samo miejsce docelowe punkty pośrednie użyte podczas tworzenia tokena trasy:

    mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Metoda Navigator.setDestinations zwraca stan żądania. Jeśli zostanie znaleziona trasa z lokalizacji użytkownika do danego miejsca docelowego: zwraca RouteStatus.OK.

Więcej informacji o tej metodzie znajdziesz na stronie Navigator.setDestinations.

Przykład

Poniższe przykłady kodu pokazują, jak pobrać zaplanowaną trasę.

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!

let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
                                                                            title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";

[mapView.navigator setDestinations:@[waypoint1, waypoint2]
                         routeToken:routeToken
                           callback:^(GMSRouteStatus routeStatus){...}];

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.