Domyślnie interfejs Routes API zwraca trasę domyślną, która jest zwykle najszybszą trasą ze punktu początkowego do miejsca docelowego. Gdy wysyłasz żądanie alternatywnych tras, interfejs API zwraca maksymalnie 3 trasy razem z trasą domyślną. Dzięki temu klienci będą mogli wybrać trasę, która najlepiej odpowiada ich potrzebom.
Co wziąć pod uwagę w przypadku wysyłania zapytań o alternatywne trasy
Podczas wysyłania żądań tras alternatywnych pamiętaj o tych kwestiach:
Możesz prosić tylko o trasy alternatywne bez pośrednich punktów pośrednich. Żądanie alternatywnych tras, gdy trasa określa pośrednie punkty na trasie, nie powoduje błędu. Nie są jednak zwracane alternatywne trasy.
Odpowiedź zawiera maksymalnie 3 alternatywne trasy. Czasami jednak nie są dostępne trasy alternatywne, więc odpowiedź zawiera tylko trasę domyślną.
Ze względu na dodatkowe przetwarzanie wymagane do obliczenia tras alternatywnych żądanie alternatywnych tras może wydłużyć czas odpowiedzi interfejsu API.
Przykładowe żądanie tras alternatywnych
Ustaw computeAlternativeRoutes
na true
, aby wysyłać prośby o alternatywne trasy. 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 aby odpowiedź zawierała tylko właściwości duration
, distanceMeters,
i routeLabels
dla każdej trasy. Dzięki tym informacjom klient może wybrać trasę, którą chce pojechać. Więcej informacji znajdziesz w sekcji Wybieranie informacji do zwrócenia.
Przykładowa odpowiedź na temat tras alternatywnych
W odpowiedzi użyj właściwości tablicy routeLabels
do określenia trasy zasięgu:
W przypadku trasy domyślnej właściwość
routeLabels
zawieraDEFAULT_ROUTE
.W przypadku alternatywnych tras właściwość
routeLabels
zawieraDEFAULT_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 w przypadku 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ę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ą, umieść 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" ] } ] }