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:
Interfejs Routes API, Routes Preferred API lub Route Optimization API zwraca zaszyfrowany token trasy, który zawiera linię łamaną trasy i cele trasy.
Token trasy przekazujesz do pakietu Navigation SDK.
Pakiet Navigation SDK pobiera trasę lub, jeśli nie jest ona dostępna z powodu zmieniających się warunków, pobiera najlepiej dopasowaną trasę.
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
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 trasy i Wysył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
lubbatchOptimizeTours
. Więcej informacji o wysyłaniu żądań tokena trasy w interfejsie Route Optimization API znajdziesz w artykule Przejście na polilinie i tokeny trasy.
Skonfiguruj żądanie interfejsu Routes API lub Routes Preferred API, aby spełniało wymagania dotyczące używania tokena trasy:
- Ustaw wartość
travel_mode
naDRIVING
lubTWO_WHEELER
- Ustaw wartość
routing_preference
naTRAFFIC_AWARE
lubTRAFFIC_AWARE_OPTIMAL
- NIE używaj
Via
punktów trasy.
- Ustaw wartość
Krok 2. Przekaż token trasy do Navigation SDK
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", }
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.