Когда вы делаете запрос, вам, возможно, придется принять решение о том, лучше ли вернуть максимально точные результаты или вернуть результаты как можно быстрее. API Routes предоставляет параметры, позволяющие контролировать качество данных ответа и задержку ответа.
Настройка уровня данных о трафике
API Routes предоставляет RoutingPreference (REST) и RoutingPreference (gRPC), которые позволяют указать параметры маршрутизации для расчета маршрутов. Эти предпочтения отличаются тем, что они учитывают условия трафика при расчете маршрута. Каждое предпочтение маршрутизации дает результаты, которые в определенной степени различаются в отношении качества маршрута, расчетного ожидаемого времени прибытия и задержки ответа.
Условия движения характеризуют скорость транспортного потока. Например:
- Когда нет заторов, условия движения считаются нормальными, и движение движется с обычной беспрепятственной скоростью.
- Приближаясь к часу пик, плотность движения увеличивается, что приводит к замедлению движения, создавая условия для движения от легкого до умеренного.
- При движении «бампер к бамперу» скорость потока останавливается, создавая условия для интенсивного движения.
Трафик не знает
Когда вы устанавливаете предпочтение маршрутизации TRAFFIC_UNAWARE
, маршруты рассчитываются без учета текущих условий трафика. Этот параметр маршрутизации обеспечивает наименьшую задержку ответа (ответы возвращаются быстрее всего).
TRAFFIC_UNAWARE
— это настройка по умолчанию.
В ответе:
ETA содержится в свойстве ответа
duration
.Свойства ответа
duration
иstaticDuration
содержат одно и то же значение.
Используйте это предпочтение маршрутизации, если вы хотите, чтобы ответы возвращались как можно быстрее, и приблизительные сведения о маршрутизации достаточно хороши.
Информация о трафике
Когда вы устанавливаете предпочтение маршрутизации TRAFFIC_AWARE
, маршруты рассчитываются с учетом текущих условий трафика. В результате маршрут и детали маршрута более точно отражают реальные условия. Поскольку это повышение качества данных происходит за счет задержки ответа, для уменьшения большей части задержки применяются оптимизации производительности.
В ответе:
Расчетное время прибытия, учитывающее трафик в реальном времени, содержится в свойстве ответа
duration
.Свойство ответа
staticDuration
содержит продолжительность путешествия по маршруту без учета условий движения.
Используйте эту настройку маршрутизации, если вам нужны более точные сведения о маршрутизации, чем TRAFFIC_UNAWARE
, и при этом вы не возражаете, если ответы возвращаются с умеренным увеличением задержки.
Оптимальный трафик с учетом трафика
Когда вы устанавливаете предпочтение маршрутизации TRAFFIC_AWARE_OPTIMAL
, маршруты рассчитываются с учетом текущих условий трафика, но оптимизация производительности не применяется. В этом режиме сервер выполняет более полный поиск дорожной сети, чтобы найти оптимальный маршрут.
Параметр маршрутизации TRAFFIC_AWARE_OPTIMAL
аналогичен режиму, используемому на сайте maps.google.com и в мобильном приложении Google Maps.
При использовании этого параметра с вычислением матрицы маршрутов количество элементов в запросе (количество источников × количество пунктов назначения) не может превышать 100. Дополнительные сведения об ограничениях вычисления матрицы маршрутов см. в разделе Вычисление матрицы маршрутов .
В ответе:
Расчетное время прибытия, учитывающее трафик в реальном времени, содержится в свойстве ответа
duration
.Свойство ответа
staticDuration
содержит продолжительность путешествия по маршруту без учета условий движения.
Этот параметр маршрутизации обеспечивает наибольшую задержку ответа (то есть ответы возвращаются с наибольшей задержкой). Используйте этот параметр маршрутизации, если вам нужны результаты самого высокого качества, независимо от того, сколько времени занимает ответ.
Влияние установки времени отправления
При необходимости вы можете использовать свойство departureTime
, чтобы установить желаемое время отправления поездки. Если вы не зададите свойство departureTime
, по умолчанию оно будет равно времени, когда вы сделаете запрос.
Для
TRAFFIC_UNAWARE
вы не можете установитьdepartureTime
, потому что выбор маршрута и продолжительности основан на дорожной сети и средних условиях движения, не зависящих от времени.Для
TRAFFIC_AWARE
иTRAFFIC_AWARE_OPTIMAL
, которые учитывают текущие условия трафика, реальный трафик становится более важным, чем ближеdepartureTime
к текущему моменту. Чем дальше в будущее вы устанавливаете время отправления, тем больше внимания уделяется историческим условиям движения.
Пример настройки маршрутизации
В следующем коде JSON показано, как задать предпочтение маршрутизации в теле объекта сообщения запроса.
{ "origin":{ "location":{ "latLng":{ "latitude":37.419734, "longitude":-122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude":37.417670, "longitude":-122.079595 } } }, "travelMode":"DRIVE", "routingPreference":"TRAFFIC_AWARE_OPTIMAL" }
Настройка качества полилиний
Routes API позволяет запрашивать информацию об условиях движения вдоль полилинии с учетом трафика . Дополнительные сведения см. в разделе Запрос полилиний .
Качество полилинии можно описать следующими терминами:
Количество точек, из которых состоит полилиния
Чем больше точек, тем глаже полилиния (особенно на кривых).
Точность точек с плавающей запятой
Точки указываются как значения широты и долготы, которые представлены в формате одинарной точности с плавающей запятой. Это хорошо работает для небольших значений (которые могут быть представлены точно), но точность уменьшается по мере увеличения значений из-за ошибок округления с плавающей запятой.
Метод ComputeRoutes (REST) и метод ComputeRoutes (gRPC) поддерживают параметр запроса polylineQuality
для управления качеством полилиний.
Пример настройки качества полилинии
polylineQuality
определяет качество полилинии как HIGH_QUALITY
или OVERVIEW
(по умолчанию). С OVERVIEW
полилиния строится с использованием небольшого количества точек и имеет меньшую задержку запроса, чем HIGH_QUALITY
.
Например, в теле запроса:
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE", "polylineQuality": "HIGH_QUALITY", "polylineEncoding": "ENCODED_POLYLINE", "departureTime": "2023-10-15T15:01:23.045123456Z", ... }