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

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

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

Метод ComputeRouteMatrix имеет несколько преимуществ по сравнению со службой Distance Matrix:

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

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

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

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

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

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

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

ОСТАЛЬНОЕ: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/v1/TopLevel/computeRouteMatrix .

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

  1. Проверьте необходимые протобуферы из репозитория googleapis:

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

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

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

  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] . Эти массивы имеют нулевой индекс. Важно сохранить порядок списка отправителей и пунктов назначения.

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

Информацию о расчете платы за проезд см. в разделе Расчет платы за проезд .

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