Zaplanuj trasę

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

  • linię łamaną trasy,

  • cele trasy,

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

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

  • 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 dotarcia do miejsca docelowego: operacja wysyłania usługi może mieć na celu zminimalizowanie czasu potrzebnego operatorom na dotarcie do miejsca, w którym należy wykonać zlecenie.

  • Obniżanie kosztów i zwiększanie 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 sekcji Żądanie tokena trasy w interfejsie Routes API oraz w sekcji Przejścia między liniami łamanymi a tokenami trasy w interfejsie Route Optimization API.

Dlaczego warto używać tokena trasy w przypadku celów związanych z trasą

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ł z niej korzystać, 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 zażądasz tokenów trasy, otrzymasz token trasy dla każdej wygenerowanej trasy. Następnie możesz wybrać token trasy, której chcesz użyć, i przekazać go do pakietu SDK Navigation.

  • Szacowanie ceny z wyprzedzeniem, w tym szacowanie czasu dotarcia i odległości. 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 trasa ekologiczna lub najkrótsza trasa.

Jak działają tokeny trasy

Do planowania trasy z użyciem celów trasy możesz używać interfejsu Routes API, Routes Preferred API lub Route Optimization API. Możesz przekazać token trasy zwrócony przez dowolny z tych interfejsów API do pakietu Navigation SDK, aby określić sposób wyznaczania trasy dla 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. Token trasy przekazujesz do pakietu Navigation SDK.

  3. Pakiet Navigation SDK pobiera trasę lub, jeśli nie jest ona dostępna z powodu zmieniających się warunków, pobiera najlepiej dopasowaną trasę.

  4. Podczas jazdy, jeśli natężenie ruchu lub inne warunki drogowe ulegną zmianie albo pojazd zboczy z zaplanowanej trasy, zmodyfikowane trasy będą stale dopasowywane do najlepszej trasy na podstawie celów trasy określonych w tokenie.

Ten proces maksymalizuje podobieństwo rzeczywistej trasy do zaplanowanej.

Dlaczego zaplanowana trasa może nie być dokładnie taka sama

Planowana trasa i cele trasy to tylko wytyczne, których nie musisz się ściśle trzymać. Może wystąpić różnica między zaplanowaną trasą a trasą podaną przez nawigację głosową. Wynika to 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 powodować rozbieżności między planowanymi a rzeczywistymi celami dotyczącymi m.in. odległości i szacowanego czasu przyjazdu.

Planowanie trasy za pomocą tokena trasy

Aby zaplanować trasę, utwórz token trasy, a następnie przekaż go do pakietu Navigation SDK, wykonując te czynności:

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:

    • Routes API: computeRoutes Więcej informacji o wysyłaniu żądań tokena trasy w interfejsie Routes API znajdziesz w artykułach Obliczanie trasyWysyłanie żądania tokena trasy.

    • Routes Preferred API: computeCustomRoutes Więcej informacji o żądaniu 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 polilinie i tokeny trasy.

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

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

Krok 2. Przekaż token trasy do Navigation SDK

  1. Zapisz token trasy: w Navigation SDK skonfiguruj ciąg znaków, w którym będzie przechowywany token 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ą metody mapView.navigator setDestinations, podając te same punkty docelowe, 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 podanego miejsca docelowego, funkcja zwraca wartośćRouteStatus.OK.

Więcej informacji o tej metodzie znajdziesz w sekcji GMSNavigator.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 tokeny trasy i pakiet Navigation SDK współpracują ze sobą

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

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

  • Korzysta z lokalizacji początkowej pojazdu.

  • Dostosowuje się do warunków drogowych i ruchu. Zobacz Dlaczego zaplanowana trasa może nie być dokładnie taka sama.

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

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Obserwatorzy:

    • Opcje związane z punktem pośrednim, np. preferowana strona drogi.

    • Cele 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.