Используйте Routes API, чтобы рассчитать расстояние и продолжительность маршрута для нескольких пунктов отправления и назначения, вызвав метод computeRouteMatrix (REST) или метод потоковой передачи ComputeRouteMatrix (gRPC).
На основе списка пунктов отправления и назначения метод рассчитывает расстояние и продолжительность маршрута, начинающегося в каждом пункте отправления и заканчивающегося в каждом пункте назначения.
Как получить матрицу маршрутов общественного транспорта
Вы также можете рассчитать матрицу маршрутов для общественного транспорта. Пример приведен в разделе Получение матрицы маршрутов для общественного транспорта.
Ограничения на количество запросов
Для методов Compute Route Matrix действуют следующие ограничения на количество путевых точек, заданных с помощью адресов или идентификаторов мест, и элементов в запросе. Элементы – это маршруты между каждым пунктом отправления и назначения в матрице маршрутов, поэтому количество элементов равно количеству пунктов отправления, умноженному на количество пунктов назначения. Например, если у вас 10 пунктов отправления и 10 пунктов назначения, то у вас 100 элементов:
Количество элементов не может превышать 625 для маршрутов, которые не являются маршрутами
TRANSIT.Если вы указываете маршрут
TRANSIT, количество элементов не может превышать 100.Если вы указываете
TRAFFIC_AWARE_OPTIMAL, количество элементов не может превышать 100. Подробнее оTRAFFIC_AWARE_OPTIMALчитайте в разделе Как указать, нужно ли включать данные о трафике и как это сделать.Если вы указываете пункты отправления или назначения с помощью адреса или идентификатора места, то можете указать до 50 пунктов.
Ошибки в ответах
Особенность методов Compute Route Matrix заключается в том, что ошибки могут возвращаться как для всего ответа, так и для отдельных его элементов. Например, если запрос составлен неправильно (например, в нем не указаны пункты отправления), то весь ответ будет содержать ошибку.
Однако если ошибка относится к подмножеству элементов в ответе (например, маршрут не может быть рассчитан для одной комбинации пункта отправления и пункта назначения), то код ошибки возвращают только элементы, затронутые ошибкой.
Результаты gRPC Stream
gRPC-метод ComputeRouteMatrix принимает список пунктов отправления и назначения и возвращает поток, содержащий информацию о маршруте для каждой комбинации пункта отправления и назначения. Поскольку результаты возвращаются в виде потока, вам не нужно ждать, пока будут рассчитаны все возможные комбинации маршрутов, прежде чем вы сможете начать обработку результатов.
Элементы, возвращаемые потоком, не гарантированно возвращаются в каком-либо порядке. Поэтому каждый элемент ответа содержит origin_index и destination_index. Для пунктов отправления и назначения, указанных в запросе, пункт отправления маршрута эквивалентен origins[origin_index] для данного элемента, а пункт назначения маршрута эквивалентен destinations[destination_index].
Индексация массивов начинается с нуля. Важно сохранить порядок списков
источника и назначения.
Примеры расчета матрицы маршрутов
Чтобы рассчитать матрицу маршрутов, используйте метод computeRouteMatrix в HTTP-запросе.
Пример HTTP
Ниже приведен пример HTTP-запроса computeRouteMatrix. В этом примере вы:
Укажите массив из двух начальных и двух конечных путевых точек. Метод рассчитывает маршрут от каждого пункта отправления до каждого пункта назначения, поэтому ответ содержит четыре маршрута.
В массиве первый элемент имеет индекс 0, второй – индекс 1 и т. д.
Добавьте маску поля ответа, чтобы указать, какие поля response (REST) или ComputeRoutesResponse (gRPC) нужно вернуть. В этом примере настройте запрос на возврат
originIndex,destinationIndex,duration,distanceMeters,statusиconditionдля каждого маршрута. Подробнее о том, как выбрать возвращаемые поля…
curl -X POST -d '{ "origins": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420761, "longitude": -122.081356 } } }, "routeModifiers": { "avoid_ferries": true} }, { "waypoint": { "location": { "latLng": { "latitude": 37.403184, "longitude": -122.097371 } } }, "routeModifiers": { "avoid_ferries": true} } ], "destinations": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420999, "longitude": -122.086894 } } } }, { "waypoint": { "location": { "latLng": { "latitude": 37.383047, "longitude": -122.044651 } } } } ], "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \ 'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'
Ответ содержит четыре возможных маршрута для комбинации всех путевых точек отправления и назначения.
Определите каждый маршрут в ответе, используя поля ответа originIndex и destinationIndex. Например, значение originIndex, равное 1, в ответе соответствует маршруту, рассчитанному от путевой точки с индексом 1 в массиве origins в запросе.
[ { "originIndex": 0, "destinationIndex": 0, "status": {}, "distanceMeters": 822, "duration": "160s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 0, "status": {}, "distanceMeters": 2919, "duration": "361s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 1, "status": {}, "distanceMeters": 5598, "duration": "402s", "condition": "ROUTE_EXISTS" }, { "originIndex": 0, "destinationIndex": 1, "status": {}, "distanceMeters": 7259, "duration": "712s", "condition": "ROUTE_EXISTS" } ]
Примеры gRPC
Примеры запросов gRPC приведены в разделе Пример запроса gRPC. Пример на Java на этой странице вызывает как Compute Routes, так и Compute Route Matrix.