Czasami warto zaplanować trasę, którą Twoja aplikacja przekazuje kierowcom. Korzystając z tokena trasy z interfejsu Routes API (lub Routes Preferred API), możesz określić 2 elementy planowanej trasy:
Linia łamana trasy
Twoje cele trasy
Oto kilka przykładów celów routingu:
Skróć czas dostawy: firma dostarczająca jedzenie może chcieć skrócić czas potrzebny na dostarczenie jedzenia.
Ogranicz czas podróży lub zużycie paliwa: firmy logistyczne mogą chcieć zwiększyć wydajność kierowców i obniżyć koszty paliwa.
Ogranicz czas do miejsca docelowego: operacja wysyłania usługi może skrócić czas potrzebny operatorom na przesłanie żądania zadania.
Obniżenie kosztów i zwiększenie bezpieczeństwa: firma oferująca wspólne przejazdy może ze względów bezpieczeństwa znaleźć trasę, która jest tańsza dla pasażerów, a także omija określone obszary.
Więcej informacji o planowaniu trasy przy użyciu tokena trasy znajdziesz w artykule Żądanie tokena trasy.
Dlaczego do celów trasy należy używać tokena trasy
Token trasy z interfejsu Routes lub Routes Preferred API daje większą kontrolę nad udostępnianą trasą:
Zaplanuj trasę z wyprzedzeniem, aby w miarę możliwości używać pakietu Navigation SDK.
Wybierz najlepszą trasę 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żyć podczas przekazywania go do pakietu SDK nawigacji.
Oszacuj cenę z wyprzedzeniem, w tym przewidywany 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ślanie bardziej zaawansowanych celów trasy, takich jak wyznaczanie tras ekologicznych lub najkrótsza trasa.
Jak działają tokeny tras interfejsu Routes API
Do planowania trasy z wykorzystaniem celów tras możesz użyć interfejsów Routes API lub Routes Preferred API. Interfejs Routes API zwraca token trasy, który możesz przekazać do pakietu SDK nawigacji, aby określić, w jaki sposób będzie on kierować pojazdem.
Oto, co się stanie, gdy poprosisz o token trasy z interfejsu Routes API i użyjesz go:
Interfejs Routes API zwraca zaszyfrowany token trasy, który zawiera cele trasy i cele trasy.
Przekazujesz token trasy do pakietu SDK nawigacji.
Pakiet SDK nawigacji pobiera trasę, a jeśli jest ona niedostępna z powodu zmieniających się warunków, pobiera najlepiej pasującą trasę.
Podczas pokonywania trasy, jeśli natężenie ruchu lub inne warunki na drodze ulegną zmianie lub pojazd odjedzie od zaplanowanej trasy, zmodyfikowane trasy będą stale dążyć do znalezienia najlepszej trasy na podstawie celów trasy określonych w tokenie.
Ten proces maksymalizuje odległość rzeczywistą do zaplanowanej trasy.
Dlaczego przewidywana trasa może nie zostać dokładnie przemierzona
Planowane trasy i trasy warto traktować jak wskazówki, których należy się przestrzegać – nie są one zależne od normy. Możesz zauważyć różnicę między zaplanowaną trasą a trasą udostępnianą przez nawigację z przewodnikiem. Wynika to z różnic w warunkach drogi, lokalizacji początkowej lub innych parametrach, które uległy zmianie od czasu utworzenia zaplanowanej trasy. Ta różnica może powodować niezgodność między planowanymi a rzeczywistymi celami dotyczącymi odległości i czasu dotarcia, a także innych istotnych aspektów podróży.
Planowanie trasy przy użyciu tokena trasy
Aby zaplanować trasę, utwórz token trasy, a następnie przekaż go do pakietu SDK nawigacji, jak opisano w tych krokach:
Krok 1. Utwórz token trasy za pomocą interfejsu Routes lub Routes Preferred API
Poproś o token trasy, korzystając z jednej z tych metod:
Routes API:
computeRoutes
. Więcej informacji o żądaniu tokena trasy w interfejsie Routes API znajdziesz w sekcjach Obliczanie trasy i Żądanie tokena trasy.Routes Preferred API:
computeCustomRoutes
. Więcej informacji o żądaniu tokena trasy w interfejsie Routes Preferred API znajdziesz w artykule o planowaniu trasy.
Skonfiguruj żądanie trasy, aby spełniało wymagania korzystania z tokena trasy:
- Ustaw wartość „
travel_mode
” na „DRIVING
” - Ustaw
routing_preference
naTRAFFIC_AWARE
lubTRAFFIC_AWARE_OPTIMAL
- NIE używaj punktów pośrednich
- Ustaw wartość „
Krok 2. Przekaż token trasy do pakietu SDK nawigacji
Zapisać 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 SDK nawigacji za pomocą metody
mapView.navigator setDestinations
, wskazują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 podanego miejsca docelowego, zwróci wartość RouteStatus.OK
.
Więcej informacji o tej metodzie znajdziesz w artykule 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){...}];
Współdziałanie tokenów tras z pakietem SDK nawigacji
Oto jak wygląda interakcja między trasą generowaną przez pakiet SDK nawigacji a zaplanowaną trasą w tokenie trasy:
Zastępuje wszystkie wcześniej ustawione miejsca docelowe.
Używa lokalizacji początkowej pojazdu.
Dostosowuje się do warunków na drodze i ruchu. Zobacz, dlaczego wyznaczona 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, np. ustawienie boku drogi.
Cele trasy. Jeśli pakiet SDK nawigacji musi dostosować zwróconą trasę, używa celów trasy określonych przez Ciebie w żądaniu tokena trasy. Z tego powodu musisz użyć tych samych opcji związanych z punktami pośrednimi, które zostały określone w interfejsie Routes API.