Domyślnie interfejs Routes API zwraca domyślną trasę, która jest zwykle najszybszą trasą z miejsca wyjazdu do miejsca docelowego. Gdy poprosisz o alternatywne trasy, interfejs API zwróci maksymalnie 3 trasy wraz z trasą domyślną. Klienci mogą wtedy wybrać trasę, która najlepiej odpowiada ich wymaganiom.
Co wziąć pod uwagę podczas proszenia o trasy alternatywne
Aby poprosić o alternatywne trasy, pamiętaj o tych kwestiach:
Odpowiedź zawiera maksymalnie 3 trasy alternatywne. Czasami jednak nie ma dostępnych tras alternatywnych, więc odpowiedź zawiera tylko trasę domyślną.
Ze względu na dodatkowe przetwarzanie wymagane do obliczenia alternatywnych tras żądanie takich tras może wydłużyć czas odpowiedzi interfejsu API.
Przykładowe żądanie dotyczące alternatywnych tras
Ustaw computeAlternativeRoutes na true, aby wysyłać żądanie alternatywnych tras. Poniższy przykład pokazuje, jak wysłać żądanie alternatywnych tras w metodzie 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, aby odpowiedź zawierała tylko właściwości duration, distanceMeters, i routeLabels dla każdej trasy. Klient może następnie wykorzystać te informacje, aby wybrać trasę. Więcej informacji znajdziesz w artykule 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ć zasięg:
W przypadku trasy domyślnej właściwość
routeLabelszawieraDEFAULT_ROUTE.W przypadku tras alternatywnych właściwość
routeLabelszawiera wartośćDEFAULT_ROUTE_ALTERNATE.
W tym przykładzie odpowiedź zawiera domyślną trasę i 2 trasy alternatywne. Zwróć uwagę, że wartości właściwości duration i distanceMeters różnią się 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ędniaj w odpowiedziach 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ć polilinię, w masce pola umieść znak routes.polyline:
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'
Odpowiedź zawiera wtedy polilinię 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" ] } ] }