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