Как посмотреть альтернативные маршруты

Разработчики из Европейской экономической зоны (ЕЭЗ)

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