По умолчанию API маршрутов возвращает маршрут по умолчанию , который обычно является самым быстрым маршрутом от источника до пункта назначения. Когда вы запрашиваете альтернативные маршруты, API возвращает до трех маршрутов вместе с маршрутом по умолчанию. Ваши клиенты смогут выбрать маршрут, который наилучшим образом соответствует их требованиям.
Что следует учитывать при запросе альтернативных маршрутов
Чтобы запросить альтернативные маршруты, примите во внимание следующие соображения:
Альтернативные маршруты можно запрашивать только для маршрутов без промежуточных точек. Запрос альтернативных маршрутов, когда в маршруте указаны промежуточные точки, не вызывает ошибки. Однако альтернативные маршруты не возвращаются.
Ответ содержит максимум три альтернативных маршрута. Однако иногда альтернативные маршруты недоступны, поэтому ответ содержит только маршрут по умолчанию.
Из-за дополнительной обработки, необходимой для расчета альтернативных маршрутов, запрос альтернативных маршрутов может увеличить время ответа API.
Пример запроса альтернативных маршрутов
Установите для computeAlternativeRoutes
значение true
, чтобы запросить альтернативные маршруты. В следующем примере показано, как запросить альтернативные маршруты в запросе метода 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'
В этом примере вы указываете маску поля, чтобы ответ содержал только свойства duration
, distanceMeters,
и routeLabels
для каждого маршрута. Затем ваш клиент может использовать эту информацию, чтобы выбрать маршрут. Дополнительные сведения см. в разделе Выбор информации для возврата .
Пример ответа на альтернативные маршруты
В ответе используйте свойство массива routeLabels
, чтобы определить маршрут достижения:
Для маршрута по умолчанию
routeLabels
содержитDEFAULT_ROUTE
.Для любых альтернативных маршрутов
routeLabels
содержитDEFAULT_ROUTE_ALTERNATE
.
В этом примере ответ содержит маршрут по умолчанию и два альтернативных маршрута. Обратите внимание, что значения свойств duration
и distanceMeters
различны для каждого маршрута:
{ "routes": [ { "distanceMeters": 150322, "duration": "5309s", "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 157614, "duration": "6879s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] }, { "distanceMeters": 189311, "duration": "7376s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] } ] }
Включить полилинии в ответ
Чтобы пользователю было проще выбирать маршрут, добавьте в ответ ломаную линию для каждого маршрута. Затем вы можете отобразить каждую полилинию на карте.
Чтобы добавить полилинию, включите в маску поля routes.polyline
:
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'
Затем ответ содержит ломаную линию для каждого маршрута:
{ "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" ] } ] }