Получить матрицу маршрута

Разработчики из Европейской экономической зоны (ЕЭЗ)

Используйте 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 используются как вычислительные маршруты, так и матрица вычислительных маршрутов.