Zaplanuj trasę

Czasami możesz chcieć zaplanować trasę, jaką Twoja aplikacja dociera do użytkowników. Użycie tokena trasy z interfejsu Routes API (lub preferowanego interfejsu Routes Preferred API) może ułatwić określenie 2 rzeczy na potrzeby planowanej trasy:

  • Linia łamana trasy

  • Cele trasy

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

  • Zminimalizuj czas dostawy: firma dostarczająca jedzenie może skrócić do minimum czas potrzebny na jej dostarczenie.

  • Ograniczenie czasu podróży i zużywania paliwa: firma logistyczna może chcieć zwiększyć wydajność kierowców i obniżyć koszty paliwa.

  • Zminimalizuj czas do momentu dotarcia do miejsca docelowego: w ramach operacji wysyłania usługi można skrócić czas potrzebny na dotarcie operatorów do żądania zadania.

  • Niższe koszty i większe bezpieczeństwo: firma oferująca usługi wspólnych przejazdów może chcieć znaleźć trasę, która będzie tańsza dla pasażerów i ze względów bezpieczeństwa omija niektóre obszary.

Więcej informacji o planowaniu trasy z użyciem tokena trasy znajdziesz w sekcji Wysyłanie żądania tokena 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ą kontrolę nad wyznaczoną trasą:

  • Zaplanuj z wyprzedzeniem trasę, której pakiet SDK nawigacji będzie mógł używać w miarę możliwości.

  • Wybierz najlepszą trasę do użycia przez pakiet SDK nawigacji. Jeśli poprosisz o tokeny trasy podczas generowania tras w interfejsie Routes API, otrzymasz token trasy dla każdej wygenerowanej trasy. Następnie możesz wybrać token trasy, której chcesz używać, przekazując go do pakietu Navigation SDK.

  • 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 oczekiwanym a rzeczywistym kosztem trasy.

  • Określ bardziej zaawansowane cele trasy, takie jak wyznaczanie tras ekologicznych lub najkrótsza trasa.

Jak działają tokeny tras interfejsu Routes API

Do zaplanowania trasy z użyciem jej celów możesz użyć interfejsu Routes API lub Preferowanego interfejsu Routes Preferred. Interfejs Routes API zwraca token trasy, który możesz przekazać do pakietu Navigation SDK, aby wskazać sposób kierowania pojazdu.

Gdy zażądasz tokena trasy i użyjesz go z interfejsu API Trasy:

  1. Interfejs Routes API zwraca zaszyfrowany token trasy zawierający cele linii łamanej trasy i cele trasy.

  2. Token trasy przekazujesz do pakietu Navigation SDK.

  3. Pakiet Navigation SDK pobiera trasę, a jeśli trasa jest niedostępna z powodu zmieniających się warunków, pobiera najlepiej pasującą trasę.

  4. Podczas jazdy, gdy zmienią się natężenie ruchu lub inne warunki drogowe albo pojazd odjedzie od zaplanowanej trasy, zmodyfikowane trasy cały czas próbują dopasować najlepszą trasę na podstawie celów wyznaczonych 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

Cele trasy i trasy należy traktować jak wskazówki, których należy przestrzegać – nie są one wymogiem. Między zaplanowaną trasą a trasą wyznaczoną przez nawigację z pomocą przewodnika mogą wystąpić różnice wynikające z różnic w stanie drogi, lokalizacji początkowej lub innych parametrach, które zmieniły się od czasu jej utworzenia. Może to prowadzić do niezgodności między planowanymi a rzeczywistymi celami dotyczącymi odległości, szacowanego czasu dotarcia na miejsce i innymi ważnymi cechami podróży.

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 o wysyłaniu tokena trasy za pomocą interfejsu Routes API znajdziesz w sekcjach o obliczaniu trasy i wysyłaniu żądań tokena trasy.

    • Preferowany interfejs API tras: computeCustomRoutes. Więcej informacji o wysyłaniu tokena trasy przez preferowany interfejs Routes Preferred API znajdziesz w artykule Planowanie trasy.

  2. Skonfiguruj żądanie trasy pod kątem spełnienia wymagań dotyczących użycia tokena trasy:

    • 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, używając metody mapView.navigator setDestinations, określając te same docelowe punkty pośrednie, które zostały 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, funkcja zwróci wartość 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 a planowana w tokenie trasy wygląda w ten sposób:

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

  • Używa lokalizacji pojazdu.

  • Dostosowuje do warunków na drodze i natężeniu ruchu. Przeczytaj artykuł 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 dostosować zwróconą trasę, używa celów trasy określonych w żądaniu tokena trasy. Dlatego używaj tych samych opcji związanych z punktami pośrednimi, które zostały określone w interfejsie Routes API.