Domyślnie interfejs Routes API zwraca trasę domyślną, która jest zwykle najszybszą trasą z miejsca wyjazdu do miejsca docelowego. Gdy poprosisz o trasy alternatywne, interfejs API zwróci maksymalnie 3 trasy wraz z trasą domyślną. Klienci mogą wybrać trasę, która najlepiej odpowiada ich wymaganiom.
Co należy wziąć pod uwagę, prosząc o trasy alternatywne
Aby poprosić o trasy alternatywne, 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 tras alternatywnych żądanie tras alternatywnych może wydłużyć czas odpowiedzi interfejsu API.
Przykładowe żądanie tras alternatywnych
Aby poprosić o trasy alternatywne, ustaw parametr computeAlternativeRoutes na true. Poniższy przykład pokazuje, jak poprosić o trasy alternatywne 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, 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 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ść
routeLabelszawieraDEFAULT_ROUTE.W przypadku tras alternatywnych właściwość
routeLabelszawiera wartośćDEFAULT_ROUTE_ALTERNATE.
W tym przykładzie odpowiedź zawiera trasę domyślną i 2 trasy alternatywne. Zwróć uwagę, że wartości właściwości duration i distanceMeters są różne dla każdej trasy:
{ "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ędnianie linii łamanych w odpowiedzi
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 wtedy ł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" ] } ] }