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:
Interfejs Routes API, Routes Preferred API lub Route Optimization API zwraca zaszyfrowany token trasy, który zawiera linię łamaną trasy i cele trasy.
Przekazujesz token trasy do pakietu Navigation SDK.
Pakiet Navigation SDK pobiera trasę lub, jeśli trasa jest niedostępna z powodu zmieniających się warunków, pobiera najlepiej pasującą trasę.
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
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:
optimizeTourslubbatchOptimizeTours. 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.
Skonfiguruj żądanie do interfejsu Routes API lub Routes Preferred API , aby spełniało wymagania dotyczące używania tokena trasy:
- Ustaw
travel_modenaDRIVElubTWO_WHEELER. - Ustaw
routing_preferencenaTRAFFIC_AWARElubTRAFFIC_AWARE_OPTIMAL. - NIE używaj punktów pośrednich
Via.
- Ustaw
Krok 2. Przekaż token trasy do pakietu Navigation SDK
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", }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.setDestinationszwraca 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:
avoidsHighwaysavoidsTollsavoidsFerrieslicensePlateRestriction
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.