Domyślnie interfejs Routes API zwraca trasę domyślną, która jest zwykle najszybszą trasą ze punktu początkowego do miejsca docelowego. Gdy żądasz tras alternatywnych, interfejs API zwraca wraz z trasą domyślną maksymalnie 3 trasy. Dzięki temu klienci będą mogli wybrać trasę, która najlepiej odpowiada ich potrzebom.
O czym warto pamiętać przy zgłaszaniu prośby o trasę alternatywną
Przy wysyłaniu próśb o alternatywne trasy pamiętaj o tych uwagach:
Możesz żądać tras alternatywnych tylko w przypadku tras bez pośrednich punktów pośrednich. Żądanie alternatywnych tras, gdy trasa określa pośrednie punkty pośrednie nie powoduje błędu. Nie są jednak zwracane żadne alternatywne trasy.
Odpowiedź zawiera maksymalnie 3 alternatywne trasy. Czasami jednak nie są dostępne żadne trasy alternatywne, więc odpowiedź zawiera tylko trasę domyślną.
Ze względu na dodatkowe przetwarzanie wymagane do obliczania alternatywnych tras żądanie alternatywnych tras może wydłużyć czas odpowiedzi interfejsu API.
Przykład żądania tras alternatywnych
Ustaw computeAlternativeRoutes
na true
, by poprosić o alternatywnych tras. Poniższy przykład pokazuje, jak zażądać tras alternatywnych w żądaniu metody computeRoutes (REST).
curl -X POST -d '{ "origin":{ "location":{ "latLng":{ "latitude":42.340173523716736, "longitude":-71.05997968330408 } } }, "destination":{ "location":{ "latLng":{ "latitude":42.075698891472804, "longitude": -72.59806562080408 } } }, "travelMode": "DRIVE", "routingPreference":"TRAFFIC_AWARE", "computeAlternativeRoutes": true }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
W tym przykładzie określasz maskę pola, tak by odpowiedź zawierała tylko właściwości duration
, distanceMeters,
i routeLabels
dla każdej trasy. Na podstawie tych informacji klient może wybrać trasę, którą powinien wybrać. Więcej informacji znajdziesz w sekcji Wybieranie informacji do zwrócenia.
Przykładowa odpowiedź dotycząca tras alternatywnych
W odpowiedzi użyj właściwości tablicy routeLabels
, aby określić trasę zasięgu:
W przypadku trasy domyślnej właściwość
routeLabels
zawiera wartośćDEFAULT_ROUTE
.W przypadku wszystkich tras alternatywnych właściwość
routeLabels
zawieraDEFAULT_ROUTE_ALTERNATE
.
W tym przykładzie odpowiedź zawiera trasę domyślną i 2 alternatywne trasy. Zwróć uwagę, że wartości właściwości duration
i distanceMeters
są różne w przypadku poszczególnych tras:
{ "routes": [ { "distanceMeters": 150322, "duration": "5309s", "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 157614, "duration": "6879s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] }, { "distanceMeters": 189311, "duration": "7376s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] } ] }
Uwzględnij w odpowiedzi linie łamane
Aby ułatwić użytkownikowi wybór trasy, dodaj do odpowiedzi linię łamaną dla każdej trasy. Następnie możesz wyświetlić każdą linię łamaną na mapie.
Aby dodać linię łamaną, uwzględnij routes.polyline
w masce pola:
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'
Odpowiedź zawiera następnie linię łamaną dla każdej trasy:
{ "routes": [ { "distanceMeters": 150322, "duration": "5309s", "polyline": { "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 157614, "duration": "6879s", "polyline": { "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] }, { "distanceMeters": 189311, "duration": "7376s", "polyline": { "encodedPolyline": "FVLL|Af@HPAV…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] } ] }