Используйте 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
Метод gRPC ComputeRouteMatrix принимает список пунктов отправления и назначения и возвращает поток, содержащий информацию о маршруте для каждой комбинации пунктов отправления и назначения. Поскольку результаты возвращаются в виде потока, вам не нужно ждать, пока будут рассчитаны все возможные комбинации маршрутов, прежде чем начать их обработку.
Элементы, возвращаемые потоком, не гарантируют возврата в каком-либо порядке. Поэтому каждый элемент ответа содержит 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 используются как вычислительные маршруты, так и матрица вычислительных маршрутов.