В настоящее время Routes API находится в предварительной версии (pre-GA). Продукты и функции до общедоступной версии могут иметь ограниченную поддержку, а изменения в продуктах и ​​функциях до общедоступной версии могут быть несовместимы с другими версиями до общедоступной версии. Предложения Pre-GA подпадают под действие Особых условий использования платформы Google Карт . Дополнительные сведения см. в описаниях стадий запуска .

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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Используйте Routes API для расчета расстояния и продолжительности маршрута для нескольких источников и пунктов назначения, вызвав метод ComputeRouteMatrix (REST) ​​или потоковый метод ComputeRouteMatrix (gRPC).

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

Ограничения запроса

Методы Compute Route Matrix применяют следующие ограничения запросов:

  • Количество элементов (количество источников × количество мест назначения) не может превышать 625.

  • Если вы укажете TRAFFIC_AWARE_OPTIMAL , количество элементов не может превышать 100. Подробнее о TRAFFIC_AWARE_OPTIMAL см. в разделе Настройка качества и задержки .

  • Максимальное количество путевых точек (отправление + пункт назначения), которое можно указать с помощью идентификатора места, равно 50.

Ошибки ответа

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

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

Трансляция результатов

Метод gRPC ComputeRouteMatrix принимает список источников и пунктов назначения и возвращает поток, содержащий сведения о маршруте для каждой комбинации источника и пункта назначения. Поскольку результаты возвращаются в виде потока, вам не нужно ждать, пока будут рассчитаны все возможные комбинации маршрутов, прежде чем вы сможете начать обработку результатов.

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

Примеры расчета матрицы маршрутов

Используйте метод calculateRouteMatrix в 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.