По умолчанию Routes 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" ] } ] }