Вычислить матрицу маршрутов

С помощью метода ComputeRouteMatrix из API Routes Preferred можно рассчитать расстояние и продолжительность маршрута для нескольких пунктов отправления и назначения. ComputeRouteMatrix поддерживает как потоковые gRPC-запросы, так и REST HTTP-запросы.

Имея список пар «пункт отправления — пункт назначения», ComputeRouteMatrix вычисляет расстояние и продолжительность маршрута, начинающегося в каждом пункте отправления и заканчивающегося в каждом пункте назначения. Каждый элемент потока соответствует информации для отдельного маршрута.

Метод ComputeRouteMatrix имеет ряд преимуществ перед сервисом Distance Matrix:

  • Потоковая обработка позволяет возвращать элементы до того, как будет вычислена вся матрица, что снижает задержку.
  • ComputeRouteMatrix предлагает детальные параметры расчета трафика, позволяющие принимать решения, касающиеся компромисса между качеством и задержкой.
  • В инфраструктуре Google запросы обрабатываются с более высоким приоритетом, что обеспечивает более высокую доступность.
  • Для путевых точек можно указать направление движения и информацию о придорожной полосе.
  • Вы можете запросить предоставление информации о платных дорогах, а также о расстоянии по маршруту и ​​предполагаемом времени прибытия.

Включите метод ComputeRouteMatrix

Прежде чем использовать метод ComputeRouteMatrix в своем коде, необходимо его включить. Дополнительную информацию о включении предпочтительных методов API маршрутов см. в разделе «Начало работы» .

Используйте метод ComputeRouteMatrix.

Метод ComputeRouteMatrix доступен через конечную точку Routes Preferred v1 .

Более подробную информацию см. в следующей документации:

gRPC: https://developers.google.com/maps/documentation/routes_preferred/reference/rpc/google.maps.routes.v1

REST: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/v1/TopLevel/computeRouteMatrix

Следующие общие шаги описывают, как использовать gRPC для вызова метода ComputeRouteMatrix :

  1. Необходимые файлы protobuffers можно найти в репозитории googleapis:

    https://github.com/googleapis/googleapis/tree/master/google/maps/routes

    Обратите внимание, что некоторые системы сборки, например Go, могут делать это автоматически.

  2. Используя предпочитаемый вами язык программирования и набор инструментов сборки, сгенерируйте соответствующий код protobuffer.

  3. Сформируйте запрос. Вместе с запросом необходимо отправить два обязательных элемента метаданных:

    • Параметр X-Goog-Api-Key должен быть установлен на ваш API-ключ.
    • Параметр X-Goog-Fieldmask должен быть задан в виде списка полей, разделенных запятыми, которые вам необходимы из ответа. Например, X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status . Вы можете использовать символ подстановки (*) для обозначения всех полей, но это не рекомендуется. Используйте символ подстановки для тестирования и понимания ответа API, но явно перечислите поля, которые вы хотите включить в маску полей, в вашем рабочем коде.

      Для получения дополнительной информации о том, как сформировать строку маски поля, см. https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto . Обратите внимание, что отключение ненужных полей может уменьшить задержку, поскольку эти поля могут потребовать дополнительных вычислений. Ваша задержка останется стабильной, если вы укажете необходимые поля, а новые поля, требующие дополнительных вычислений, будут добавлены позже.

  4. Отправьте свой запрос на routespreferred.googleapis.com:443 . Необходимо использовать протокол TLS.

Примеры использования метода ComputeRouteMatrix см. в разделе «Примеры вычисления матрицы маршрутов (бета-версия)» .

Одной из отличительных особенностей метода ComputeRouteMatrix является то, что коды ошибок могут возвращаться либо для всего потока, либо для отдельных элементов. Например, соединение потока возвращает ошибку, если запрос имеет некорректный формат (например, содержит ноль источников). Однако, если ошибка относится только к нескольким элементам потока (например, установка недопустимого идентификатора места для источника), то коды ошибок будут содержаться только в тех элементах, которые затронуты ошибкой.

Элементы, возвращаемые потоком, не гарантируют возврата в каком-либо порядке. Поэтому каждый элемент содержит origin_index и destination_index . Для начальных и конечных точек, указанных в запросе, начальная точка маршрута эквивалентна origins[origin_index] для данного элемента, а конечная точка маршрута эквивалентна destinations[destination_index] . Эти массивы имеют нулевую индексацию. Важно хранить порядок элементов в списках начальных и конечных точек.

Расчет платы за проезд по платным дорогам

Для получения информации о расчете платы за проезд см. раздел «Расчет платы за проезд» .

Примеры расчета платы за проезд см. в разделе «Примеры расчета матрицы маршрутов» .