Используйте API маршрутов для расчета расстояния и продолжительности маршрута для нескольких исходных и конечных точек, вызвав метод computeRouteMatrix (REST) или потоковый метод ComputeRouteMatrix (gRPC).
При наличии списка пунктов отправления и назначения метод рассчитывает расстояние и продолжительность маршрута, начинающегося в каждом пункте отправления и заканчивающегося в каждом пункте назначения.
Получить матрицу транзитных маршрутов
Вы также можете вычислить матрицу маршрута на транзите. Для примера см. Получить матрицу маршрута на транзите .
Запрос лимитов
Методы Compute Route Matrix обеспечивают следующие ограничения запросов для точек маршрута с использованием адреса или placeID, а также для элементов. Элементы — это маршруты между каждым источником и пунктом назначения в матрице маршрута, поэтому количество элементов равно количеству источников, умноженному на количество пунктов назначения. Например, если у вас 10 источников и 10 пунктов назначения, у вас есть 100 элементов:
Количество элементов не может превышать 625 для маршрутов, не являющихся
TRANSIT
.Если вы указываете маршрут
TRANSIT
, количество элементов не может превышать 100.Если указано
TRAFFIC_AWARE_OPTIMAL
, количество элементов не может превышать 100. Для получения дополнительной информации оTRAFFIC_AWARE_OPTIMAL
см. Укажите, следует ли включать данные о трафике и как это сделать .Если вы указываете пункты отправления или назначения с помощью адреса или идентификатора места , то таким образом можно указать до 50 пунктов.
Ошибки ответа
Одной из особенностей методов Compute Route Matrix является то, что ошибки могут возвращаться как для всего ответа, так и для отдельных элементов ответа. Например, весь ответ содержит ошибку, если запрос неправильно сформирован (например, имеет нулевые источники).
Однако если ошибка относится к подмножеству элементов в ответе (например, маршрут не может быть вычислен для одной комбинации пункта отправления и пункта назначения), то код ошибки возвращают только элементы, затронутые ошибкой.
Результаты потока gRPC
Метод ComputeRouteMatrix gRPC принимает список источников и пунктов назначения и возвращает поток, содержащий информацию о маршруте для каждой комбинации источника и пункта назначения. Поскольку результаты возвращаются в виде потока, вам не нужно ждать, пока будут рассчитаны все возможные комбинации маршрутов, прежде чем вы сможете начать обрабатывать результаты.
Элементы, возвращаемые потоком, не гарантированно будут возвращены в любом порядке. Поэтому каждый элемент ответа содержит origin_index
и destination_index
. Для источников и пунктов назначения, указанных в запросе, источник маршрута эквивалентен origins[origin_index]
для данного элемента, а пункт назначения маршрута эквивалентен destinations[destination_index]
. Эти массивы индексируются нулем. Важно сохранить порядок списков источников и пунктов назначения.
Примеры вычисления матрицы маршрутов
Используйте метод computeRouteMatrix в HTTP-запросе для вычисления матрицы маршрутов.
HTTP-пример
Следующий пример показывает HTTP-запрос computeRouteMatrix
. В этом примере вы:
Укажите массив из двух исходных и двух конечных точек маршрута. Метод вычисляет маршрут от каждого исходного пункта до каждого конечного пункта, поэтому ответ содержит четыре маршрута.
В массиве первый элемент имеет индекс 0, второй — индекс 1 и т. д.
Включите маску поля ответа, чтобы указать, какие поля ответа (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.