Zaplanuj trasę

Czasami możesz chcieć zaplanować trasę, którą Twoja 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 zaplanowanej trasy:

  • linii łamanej trasy,

  • celów trasy.

Oto kilka przykładów celów mechanizmu planowania trasy:

  • Skrócenie czas dostawy: firma dostarczająca jedzenie może chcieć skrócić czas dostawy.

  • Skrócenie czasu podróży lub zmniejszenie zużycia paliwa: firma logistyczna może chcieć zwiększyć wydajność kierowców i zmniejszyć koszty paliwa.

  • Skrócenie czasu dotarcia do miejsca docelowego: usługa wysyłania zleceń może chcieć skrócić czas dotarcia operatorów do miejsca docelowego.

  • Obniżenie kosztów i zwiększenie 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 artykułach Żądanie tokena trasy w interfejsie Routes API oraz Przejście na linie łamane i tokeny trasy w interfejsie Route Optimization API.

Dlaczego warto używać tokena trasy do określania celów trasy

Dzięki tokenowi trasy z interfejsu Routes API, Routes Preferred API lub Route Optimization API masz większą kontrolę nad trasą:

  • Zaplanuj trasę z wyprzedzeniem , aby pakiet Navigation SDK mógł jej użyć, 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 poprosisz o tokeny trasy, otrzymasz token dla każdej wygenerowanej trasy. Następnie możesz wybrać token trasy, której chcesz użyć, i przekazać go do pakietu SDK Navigation.

  • Z góry oszacuj cenę, w tym szacowany czas dotarcia na miejsce i odległość. Chociaż rzeczywisty koszt i czas mogą się różnić, 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

Za pomocą interfejsu Routes API, Routes Preferred API lub Route Optimization API możesz zaplanować trasę, korzystając z celów trasy. Token trasy zwrócony przez dowolny z tych interfejsów API możesz przekazać do pakietu Navigation SDK, aby określić, jak ma on wyznaczać trasę dla Twojego 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. Przekazujesz token trasy do pakietu Navigation SDK.

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

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

Ten proces maksymalizuje podobieństwo rzeczywistej trasy do zaplanowanej trasy.

Dlaczego zaplanowana trasa może nie zostać dokładnie przejechana

Zaplanowaną trasę i cele trasy traktuj jako wytyczne, których należy się trzymać, a nie jako ścisłe instrukcje. Różnica między zaplanowaną trasą a trasą wyznaczoną przez nawigację może wynikać z różnic w warunkach drogowych, lokalizacji początkowej lub innych parametrach, które uległy zmianie od czasu utworzenia zaplanowanej trasy. Ta różnica może spowodować rozbieżność między zaplanowanymi a rzeczywistymi celami dotyczącymi odległości i szacowanego czasu dotarcia na miejsce, a także innych ważnych parametrów podróży.

Planowanie trasy za pomocą tokena trasy

Trasę możesz zaplanować, tworząc token trasy, a następnie przekazując go do pakietu Navigation SDK. Opisują to te kroki:

Krok 1. Utwórz token trasy za pomocą interfejsu Routes API, Routes Preferred API lub Route Optimization API

  1. Poproś o token trasy za pomocą 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 trasy i Żądanie tokena trasy.

    • Routes Preferred API: computeCustomRoutes. Więcej informacji o wysyłaniu żądań 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 linie łamane i tokeny trasy.

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

    • Ustaw travel_mode na DRIVE lub TWO_WHEELER.
    • 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. Zapisz token 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ą mapView.navigator.setDestinations. Określ te same punkty pośrednie miejsca docelowego, których użyto 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 podanego miejsca docelowego, zwraca ona wartość RouteStatus.OK.

Scenariusze z kilkoma przystankami

Możesz skonfigurować maksymalnie 25 punktów pośrednich.

Metoda setDestinations nie obsługuje podróży z kilkoma przystankami. Aby przejść do następnego etapu podróży, użyj continueToNextDestinationWithCompletion().

Przykład

Te 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 tokeny trasy i pakiet Navigation SDK wchodzą ze sobą w interakcje

Oto jak trasa wygenerowana przez Navigation SDK i zaplanowana trasa w tokenie trasy wchodzą ze sobą w interakcje:

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

  • Używa lokalizacji początkowej pojazdu.

  • Dostosowuje się do warunków na drodze i natężenia ruchu. Zobacz Dlaczego zaplanowana trasa może nie zostać dokładnie przejechana.

  • Ignoruje te opcje związane z wyznaczaniem trasy jako niepotrzebne:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Przestrzega:

    • Opcji związanych z punktami pośrednimi, takich jak preferencja dotycząca strony drogi.

    • Celów 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.