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

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

Используйте 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 . Для исходных и конечных точек, указанных в запросе, origin маршрута эквивалентен origins[origin_index] для данного элемента, а destination маршрута эквивалентен 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 на этой странице вызывает как Compute Routes, так и Compute Route Matrix.