Czasami możesz chcieć zaplanować trasę, którą Twoja aplikacja ma wyświetlać użytkownikom. Korzystając z tokenu trasy z interfejsu Routes API, Routes Preferred API lub Route Optimization API, możesz określić 2 rzeczy dla zaplanowanej trasy:
Linia łamana dla trasy
Cele trasy
Oto przykładowe cele kierowania, które możesz stosować:
Minimalizowanie czasu dostawy: firma dostarczająca jedzenie może chcieć zminimalizować czas potrzebny na dostarczenie posiłku.
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 dojazdu do miejsca docelowego: operacja zlecania usługi może chcieć zminimalizować czas potrzebny operatorom na dotarcie do miejsca wykonania zlecenia.
Obniżka kosztów i zwiększenie bezpieczeństwa: firma oferująca usługi przewozu osób może chcieć znaleźć trasę, która jest tańsza dla pasażerów i omija określone obszary ze względów bezpieczeństwa.
Więcej informacji o planowaniu trasy za pomocą tokenu trasy znajdziesz w artykule Wysyłanie żądania dotyczącego tokenu trasy w interfejsie Routes API oraz w artykule Przejście na polilinie i tokeny trasy w interfejsie Route Optimization API.
Dlaczego warto używać tokenu trasy do celów związanych z trasami
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 SDK do nawigacji mógł go użyć, gdy to możliwe.
Wybierz najlepszą trasę dla pakietu SDK do nawigacji. Jeśli podczas generowania tras w interfejsie Routes API żądasz tokenów trasy, otrzymasz token trasy dla każdej wygenerowanej trasy. Następnie możesz wybrać token trasy, której chcesz użyć, gdy przekażesz ją do pakietu SDK nawigacji.
Oszacuj cenę z wyprzedzeniem, w tym szacowane przybliżone przybycie i odległość. Rzeczywisty koszt i czas mogą się różnić, ale dzięki tej szacowanej wartości różnica między oczekiwanym a rzeczywistym kosztem trasy jest mniejsza.
określać bardziej zaawansowane cele trasy, takie jak wyznaczanie trasy przyjaznej dla środowiska lub najkrótszej trasy;
Jak działają tokeny tras
Do planowania trasy za pomocą celów trasy możesz użyć interfejsu Routes API, Routes Preferred API lub Route Optimization API. Do pakietu SDK nawigacji możesz przekazać token trasy zwrócony przez dowolny z tych interfejsów API, aby określić, jak ma on wyznaczać trasę dla pojazdu.
Oto, co się dzieje, gdy żądasz i używasz tokenu trasy:
Interfejsy Routes API, Routes Preferred API lub Route Optimization API zwracają zaszyfrowany token trasy, który zawiera polilinie trasy i cele trasy.
Token trasy przekazujesz do pakietu SDK do nawigacji.
Pakiet SDK nawigacji pobiera trasę, a jeśli nie jest ona dostępna z powodu zmieniających się warunków, pobiera najbliższą do niej trasę.
Podczas przejazdu, jeśli zmieni się natężenie ruchu lub inne warunki drogowe albo pojazd zboczy z planowanej trasy, zmodyfikowane trasy będą stale próbować dopasować się do najlepszej trasy na podstawie celów trasy w tokenie.
Dzięki temu procesowi rzeczywista trasa jest jak najbardziej zbliżona do zaplanowanej.
Dlaczego zaplanowana trasa może nie być dokładnie podążana
Zaplanowaną trasę i jej cele traktuj jako wskazówki: nie są one wiążące. Możesz zauważyć różnicę między zaplanowaną trasą a trasą wyświetlaną przez nawigację prowadzoną z powodu różnic w warunkach na drodze, lokalizacji początkowej lub innych parametrów, które uległy zmianie od momentu utworzenia zaplanowanej trasy. Ta różnica może spowodować rozbieżność między planowanymi a rzeczywistymi celami dotyczącymi odległości i przewidywanego czasu dojazdu, a także innymi ważnymi parametrami podróży.
Planowanie trasy za pomocą tokenu trasy
Możesz zaplanować trasę, tworząc token trasy i przekazując go do pakietu SDK nawigacji w ten sposób:
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 wykonywaniu żądania tokenu trasy w interfejsie Routes API znajdziesz w artykułach Obliczanie trasy i Wysyłanie żądania tokenu trasy.Routes Preferred API:
computeCustomRoutes
. Więcej informacji o wysyłaniu żądania tokenu trasy w interfejsie Routes Preferred API znajdziesz w artykule Planowanie trasy.Route Optimization API:
optimizeTours
lubbatchOptimizeTours
. Więcej informacji o wysyłaniu żądania tokenu trasy w interfejsie Route Optimization API znajdziesz w artykule Przechodzenie na ścieżkę wielokątną i tokeny trasy.
Skonfiguruj interfejs Routes API lub Routes Preferred API, aby spełnić wymagania dotyczące używania tokenu trasy:
- Ustaw wartość
travel_mode
naDRIVING
lubTWO_WHEELER
- Ustaw wartość
routing_preference
naTRAFFIC_AWARE
lubTRAFFIC_AWARE_OPTIMAL
- NIE UŻYWAJ punktów pośrednich
Via
- Ustaw wartość
Krok 2. Przekaż token trasy do pakietu SDK do nawigacji
Przechowuj token trasy: w pakiecie Navigation SDK skonfiguruj ciąg znaków do przechowywania tokenu trasy. Na przykład:
let routeToken = "route token returned by Routes API"
Przykład zwróconego tokenu trasy:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }
Przekazuj token trasy do pakietu SDK nawigacji za pomocą metody
mapView.navigator setDestinations
, podając te same punkty docelowe, które zostały użyte podczas tworzenia tokenu 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 się RouteStatus.OK
.
Więcej informacji o tej metodzie znajdziesz w artykule 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){...}];
Interakcje tokenów trasy z pakietem SDK do nawigacji
Oto jak trasa wygenerowana przez pakiet SDK do nawigacji i planowana trasa w tokenie trasy ze sobą współdziałają:
Zastępuje wszystkie wcześniej ustawione miejsca docelowe.
Używa lokalizacji początkowej pojazdu.
Dostosowanie do warunków na drodze i natężenia ruchu. Dowiedz się, dlaczego samochód może nie jechać dokładnie wyznaczoną trasą.
Ignoruje te opcje związane z przekierowywaniem, ponieważ są niepotrzebne:
avoidsHighways
avoidsTolls
avoidsFerries
licensePlateRestriction
Obserwuje:
Opcje związane z punktami orientacyjnymi, np. preferencja dotycząca strony drogi.
Cele dotyczące tras. Jeśli pakiet SDK Nawigacji musi dostosować zwróconą trasę, używa do tego celów trasy określonych podczas żądania tokenu trasy. Z tego powodu należy używać tych samych opcji dotyczących punktów pośrednich, które zostały określone w interfejsie Routes API.