Method: computeRoutes

Возвращает основной маршрут вместе с необязательными альтернативными маршрутами с заданным набором конечных и промежуточных путевых точек.

ПРИМЕЧАНИЕ. Этот метод требует, чтобы вы указали маску поля ответа во входных данных. Вы можете указать маску поля ответа, используя параметр URL-адреса $fields или fields или используя заголовок HTTP/gRPC X-Goog-FieldMask (см. доступные параметры и заголовки URL-адреса . Значение представляет собой список путей к полям, разделенных запятыми. См. подробная документация о том, как создавать пути к полям .

Например, в этом методе:

  • Маска поля всех доступных полей (для ручной проверки): X-Goog-FieldMask: *
  • Маска поля длительности, расстояния и полилинии на уровне маршрута (пример производственной настройки): X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline

Google не рекомендует использовать маску поля ответа с подстановочным знаком ( * ) или указывать маску поля на верхнем уровне ( routes ), потому что:

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

HTTP-запрос

POST https://routes.googleapis.com/directions/v2:computeRoutes

URL-адрес использует синтаксис транскодирования gRPC .

Тело запроса

Тело запроса содержит данные со следующей структурой:

Представление JSON
{
  "origin": {
    object (Waypoint)
  },
  "destination": {
    object (Waypoint)
  },
  "intermediates": [
    {
      object (Waypoint)
    }
  ],
  "travelMode": enum (RouteTravelMode),
  "routingPreference": enum (RoutingPreference),
  "polylineQuality": enum (PolylineQuality),
  "polylineEncoding": enum (PolylineEncoding),
  "departureTime": string,
  "computeAlternativeRoutes": boolean,
  "routeModifiers": {
    object (RouteModifiers)
  },
  "languageCode": string,
  "regionCode": string,
  "units": enum (Units),
  "requestedReferenceRoutes": [
    enum (ReferenceRoute)
  ],
  "extraComputations": [
    enum (ExtraComputation)
  ]
}
Поля
origin

object ( Waypoint )

Необходимый. Исходная путевая точка.

destination

object ( Waypoint )

Необходимый. Пункт назначения.

intermediates[]

object ( Waypoint )

Необязательный. Набор путевых точек на маршруте (исключая конечные точки), на которых можно остановиться или проехать. Поддерживается до 25 промежуточных путевых точек.

travelMode

enum ( RouteTravelMode )

Необязательный. Определяет вид транспорта.

routingPreference

enum ( RoutingPreference )

Необязательный. Указывает, как вычислить маршрут. Сервер пытается использовать выбранный параметр маршрутизации для расчета маршрута. Если предпочтение маршрутизации приводит к ошибке или слишком большой задержке, возвращается ошибка. Вы можете указать эту опцию, только если для travelMode установлено DRIVE или TWO_WHEELER , в противном случае запрос завершится ошибкой.

polylineQuality

enum ( PolylineQuality )

Необязательный. Определяет ваши предпочтения в отношении качества полилинии.

polylineEncoding

enum ( PolylineEncoding )

Необязательный. Задает предпочтительную кодировку полилинии.

departureTime

string ( Timestamp format)

Необязательный. Время отправления. Если вы не зададите это значение, то оно будет по умолчанию равно времени, когда вы сделали запрос. Если вы установите это значение на время, которое уже произошло, то запрос завершится ошибкой.

Временная метка в формате RFC3339 UTC "Zulu" с разрешением в наносекунды и до девяти дробных цифр. Примеры: "2014-10-02T15:01:23Z" и "2014-10-02T15:01:23.045123456Z" .

computeAlternativeRoutes

boolean

Необязательный. Указывает, следует ли рассчитывать альтернативные маршруты в дополнение к маршруту. Для запросов с промежуточными путевыми точками альтернативные маршруты не возвращаются.

routeModifiers

object ( RouteModifiers )

Необязательный. Набор условий, которые влияют на способ расчета маршрутов.

languageCode

string

Необязательный. Код языка BCP-47, например «en-US» или «sr-Latn». Для получения дополнительной информации см. http://www.unicode.org/reports/tr35/#Unicode_locale_identifier . Список поддерживаемых языков см. в разделе Языковая поддержка . Если вы не укажете это значение, язык интерфейса выводится из расположения запроса маршрута.

regionCode

string

Необязательный. Код региона, указанный как двухсимвольное значение ccTLD («домен верхнего уровня»). Для получения дополнительной информации см. https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains#Country_code_top-level_domains .

units

enum ( Units )

Необязательный. Указывает единицы измерения для отображаемых полей. Это включает в себя поле instruction в NavigationInstruction . Это значение не влияет на единицы измерения, используемые для маршрута, этапа, длины шага и продолжительности. Если вы не укажете это значение, то отображаемые единицы выводятся из местоположения запроса.

requestedReferenceRoutes[]

enum ( ReferenceRoute )

Необязательный. Указывает, какие эталонные маршруты следует рассчитать как часть запроса в дополнение к маршруту по умолчанию. Эталонный маршрут — это маршрут с целью расчета маршрута, отличной от маршрута по умолчанию. Например, при расчете эталонного маршрута FUEL_EFFICIENT учитываются различные параметры, которые позволяют создать оптимальный маршрут с эффективным расходом топлива.

extraComputations[]

enum ( ExtraComputation )

Необязательный. Список дополнительных вычислений, которые могут быть использованы для выполнения запроса. Примечание. Эти дополнительные вычисления могут возвращать дополнительные поля в ответе. Эти дополнительные поля также должны быть указаны в маске поля, которая будет возвращена в ответе.

Тело ответа

В случае успеха тело ответа содержит данные со следующей структурой:

v2.compute перенаправляет ответное сообщение.

Представление JSON
{
  "routes": [
    {
      object (Route)
    }
  ],
  "fallbackInfo": {
    object (FallbackInfo)
  },
  "geocodingResults": {
    object (GeocodingResults)
  }
}
Поля
routes[]

object ( Route )

Содержит массив вычисленных маршрутов (до трех), если вы укажете calculate_alternatives_routes, и содержит только один маршрут, если вы этого не сделаете. Когда этот массив содержит несколько записей, наиболее рекомендуемым маршрутом является первая. Если массив пуст, значит маршрут не найден.

fallbackInfo

object ( FallbackInfo )

В некоторых случаях, когда сервер не может вычислить результаты маршрута со всеми параметрами ввода, он может вернуться к использованию другого способа вычисления. При использовании резервного режима это поле содержит подробную информацию о резервном ответе. В противном случае это поле не установлено.

geocodingResults

object ( GeocodingResults )

Содержит информацию ответа геокодирования для путевых точек, указанных как адреса.

PolylineQuality

Набор значений, определяющих качество полилинии.

перечисления
POLYLINE_QUALITY_UNSPECIFIED Не заданы предпочтения качества полилиний. По умолчанию OVERVIEW .
HIGH_QUALITY Указывает высококачественную полилинию, которая состоит из большего количества точек, чем OVERVIEW , за счет увеличения размера ответа. Используйте это значение, когда вам нужна большая точность.
OVERVIEW Определяет обзорную полилинию, состоящую из небольшого количества точек. Используйте это значение при отображении обзора маршрута. Использование этого параметра имеет меньшую задержку запроса по сравнению с использованием параметра HIGH_QUALITY .

ПолилинияКодирование

Указывает предпочтительный тип возвращаемой полилинии.

перечисления
POLYLINE_ENCODING_UNSPECIFIED Не указан предпочтительный тип полилинии. По умолчанию ENCODED_POLYLINE .
ENCODED_POLYLINE Указывает полилинию, закодированную с использованием алгоритма кодирования полилинии .
GEO_JSON_LINESTRING Задает полилинию, используя формат GeoJSON LineString.

Единицы

Набор значений, определяющих единицу измерения, используемую при отображении.

перечисления
UNITS_UNSPECIFIED Единицы измерения не указаны. По умолчанию используется единица измерения, полученная из запроса.
METRIC Метрические единицы измерения.
IMPERIAL Имперские (английские) единицы измерения.

СсылкаМаршрут

Поддерживаемый эталонный маршрут в ComputeRoutesRequest.

перечисления
REFERENCE_ROUTE_UNSPECIFIED Не используется. Запросы, содержащие это значение, не выполняются.
FUEL_EFFICIENT Топливоэффективный маршрут. Маршруты, отмеченные этим значением, определены как оптимизированные по таким параметрам, как расход топлива.

Дополнительные вычисления

Дополнительные вычисления для выполнения при выполнении запроса.

перечисления
EXTRA_COMPUTATION_UNSPECIFIED Не используется. Запросы, содержащие это значение, не будут выполнены.
TOLLS Информация о платных проездах по маршруту(ам).
FUEL_CONSUMPTION Расчетный расход топлива по маршруту(ам).
TRAFFIC_ON_POLYLINE Полилинии с учетом трафика для маршрута(ов).

Маршрут

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

Представление JSON
{
  "routeLabels": [
    enum (RouteLabel)
  ],
  "legs": [
    {
      object (RouteLeg)
    }
  ],
  "distanceMeters": integer,
  "duration": string,
  "staticDuration": string,
  "polyline": {
    object (Polyline)
  },
  "description": string,
  "warnings": [
    string
  ],
  "viewport": {
    object (Viewport)
  },
  "travelAdvisory": {
    object (RouteTravelAdvisory)
  },
  "routeToken": string
}
Поля
routeLabels[]

enum ( RouteLabel )

Метки для Route , которые полезны для определения конкретных свойств маршрута для сравнения с другими.

legs[]

object ( RouteLeg )

Набор участков (сегментов пути между путевыми точками), составляющих маршрут. Каждый этап соответствует поездке между двумя via Waypoints . Например, маршрут без промежуточных путевых точек имеет только один этап. Маршрут, включающий одну via путевую точку, не являющуюся промежуточной, имеет два этапа. Маршрут, который включает в себя один маршрут via промежуточную путевую точку, имеет один этап. Порядок этапов соответствует порядку путевых точек от origin к intermediates и к destination .

distanceMeters

integer

Протяженность маршрута, в метрах.

duration

string ( Duration format)

Время, необходимое для прохождения маршрута. Если вы установите для routingPreference значение TRAFFIC_UNAWARE , то это значение будет таким же, как staticDuration . Если для routingPreference установлено значение TRAFFIC_AWARE или TRAFFIC_AWARE_OPTIMAL , это значение рассчитывается с учетом условий трафика.

Длительность в секундах, содержащая до девяти дробных цифр, заканчивающаяся на « s ». Пример: "3.5s" .

staticDuration

string ( Duration format)

Продолжительность движения по маршруту без учета условий движения.

Длительность в секундах, содержащая до девяти дробных цифр, заканчивающаяся на « s ». Пример: "3.5s" .

polyline

object ( Polyline )

Общая полилиния маршрута. Эта полилиния будет объединенной полилинией всех legs .

description

string

Описание маршрута.

warnings[]

string

Массив предупреждений для отображения при отображении маршрута.

viewport

object ( Viewport )

Ограничивающая рамка области просмотра полилинии.

travelAdvisory

object ( RouteTravelAdvisory )

Дополнительная информация о маршруте.

routeToken

string

Безопасный для Интернета токен маршрута в кодировке base64, который можно передать в NavigationSDK, что позволяет пакету Navigation SDK реконструировать маршрут во время навигации и в случае перемаршрутизации учитывать исходное намерение при вызове Routes v2.computeRoutes. Клиенты должны рассматривать этот токен как непрозрачный большой двоичный объект. ПРИМЕЧАНИЕ. Route.route_token доступен только для запросов, в которых для ComputeRoutesRequest.routing_preference задано значение TRAFFIC_AWARE или TRAFFIC_AWARE_OPTIMAL . Route.route_token также не поддерживается для запросов, содержащих путевые точки Via.

Метка маршрута

Метки для Route , которые полезны для определения конкретных свойств маршрута для сравнения с другими.

перечисления
ROUTE_LABEL_UNSPECIFIED По умолчанию - не используется.
DEFAULT_ROUTE «Лучший» маршрут по умолчанию, возвращенный для расчета маршрута.
DEFAULT_ROUTE_ALTERNATE Альтернатива «лучшему» маршруту по умолчанию. Маршруты, подобные этому, будут возвращены, если указан параметр computeAlternativeRoutes .
FUEL_EFFICIENT Топливоэффективный маршрут. Маршруты, помеченные этим значением, оптимизированы для таких параметров Eco, как расход топлива.

МаршрутЭтап

Инкапсулирует сегмент между via путевыми точками.

Представление JSON
{
  "distanceMeters": integer,
  "duration": string,
  "staticDuration": string,
  "polyline": {
    object (Polyline)
  },
  "startLocation": {
    object (Location)
  },
  "endLocation": {
    object (Location)
  },
  "steps": [
    {
      object (RouteLegStep)
    }
  ],
  "travelAdvisory": {
    object (RouteLegTravelAdvisory)
  }
}
Поля
distanceMeters

integer

Протяженность участка маршрута, в метрах.

duration

string ( Duration format)

Продолжительность времени, необходимого для прохождения ноги. Если для route_preference установлено значение TRAFFIC_UNAWARE , то это значение совпадает со staticDuration . Если route_preference имеет значение TRAFFIC_AWARE или TRAFFIC_AWARE_OPTIMAL , то это значение рассчитывается с учетом условий трафика.

Длительность в секундах, содержащая до девяти дробных цифр, заканчивающаяся на « s ». Пример: "3.5s" .

staticDuration

string ( Duration format)

Продолжительность проезда по этапу, рассчитанная без учета условий движения.

Длительность в секундах, содержащая до девяти дробных цифр, заканчивающаяся на « s ». Пример: "3.5s" .

polyline

object ( Polyline )

Общая полилиния для этого участка. Это включает в себя полилинию каждого step .

startLocation

object ( Location )

Место начала этого этапа. Это может отличаться от предоставленного origin . Например, если исходная origin не находится рядом с дорогой, это точка на дороге.

endLocation

object ( Location )

Конечное место этой ноги. Это может отличаться от указанного destination . Например, если указанный destination находится не рядом с дорогой, это точка на дороге.

steps[]

object ( RouteLegStep )

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

travelAdvisory

object ( RouteLegTravelAdvisory )

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

Полилиния

Инкапсулирует закодированную полилинию.

Представление JSON
{

  // Union field polyline_type can be only one of the following:
  "encodedPolyline": string,
  "geoJsonLinestring": {
    object
  }
  // End of list of possible types for union field polyline_type.
}
Поля
Поле объединения polyline_type . Инкапсулирует тип полилинии. По умолчанию используется encoded_polyline. polyline_type может быть только одним из следующих:
encodedPolyline

string

Строковое кодирование полилинии с использованием алгоритма кодирования полилинии

geoJsonLinestring

object ( Struct format)

Задает полилинию, используя формат GeoJSON LineString.

МаршрутLegStep

Инкапсулирует сегмент RouteLeg . Шаг соответствует одной инструкции навигации. Участки маршрута состоят из ступенек.

Представление JSON
{
  "distanceMeters": integer,
  "staticDuration": string,
  "polyline": {
    object (Polyline)
  },
  "startLocation": {
    object (Location)
  },
  "endLocation": {
    object (Location)
  },
  "navigationInstruction": {
    object (NavigationInstruction)
  },
  "travelAdvisory": {
    object (RouteLegStepTravelAdvisory)
  }
}
Поля
distanceMeters

integer

Расстояние прохождения этого шага в метрах. В некоторых случаях это поле может не иметь значения.

staticDuration

string ( Duration format)

Продолжительность проезда через этот этап без учета условий движения. В некоторых случаях это поле может не иметь значения.

Длительность в секундах, содержащая до девяти дробных цифр, заканчивающаяся на « s ». Пример: "3.5s" .

polyline

object ( Polyline )

Полилиния, связанная с этим шагом.

startLocation

object ( Location )

Место начала этого шага.

endLocation

object ( Location )

Место окончания этого шага.

navigationInstruction

object ( NavigationInstruction )

Инструкции по навигации.

travelAdvisory

object ( RouteLegStepTravelAdvisory )

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

Маневр

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

перечисления
MANEUVER_UNSPECIFIED Не используется.
TURN_SLIGHT_LEFT Поверните немного влево.
TURN_SHARP_LEFT Резко повернуть налево.
UTURN_LEFT Сделайте левый разворот.
TURN_LEFT Поверните налево.
TURN_SLIGHT_RIGHT Поверните немного вправо.
TURN_SHARP_RIGHT Резко поверните направо.
UTURN_RIGHT Сделайте правый разворот.
TURN_RIGHT Поверните направо.
STRAIGHT Езжайте прямо.
RAMP_LEFT Возьмите левый пандус.
RAMP_RIGHT Возьмите правый пандус.
MERGE Слиться с трафиком.
FORK_LEFT Возьмите левую развилку.
FORK_RIGHT Возьмите правую вилку.
FERRY Сядьте на паром.
FERRY_TRAIN Сядьте на поезд, ведущий на паром.
ROUNDABOUT_LEFT Поверните налево на кольцевой развязке.
ROUNDABOUT_RIGHT Поверните направо на кольцевой развязке.

RouteLegStepTravelAdvisory

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

Представление JSON
{
  "speedReadingIntervals": [
    {
      object (SpeedReadingInterval)
    }
  ]
}
Поля
speedReadingIntervals[]

object ( SpeedReadingInterval )

ПРИМЕЧАНИЕ. В настоящее время это поле не заполнено.

RouteLegTravelAdvisory

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

Представление JSON
{
  "tollInfo": {
    object (TollInfo)
  },
  "speedReadingIntervals": [
    {
      object (SpeedReadingInterval)
    }
  ]
}
Поля
tollInfo

object ( TollInfo )

Инкапсулирует информацию о платных дорогах на конкретном участке RouteLeg. Это поле заполняется только в том случае, если мы ожидаем, что на RouteLeg есть дорожные сборы. Если это поле установлено, но подполе предполагаемая цена не заполнено, мы ожидаем, что дорога содержит плату за проезд, но мы не знаем расчетной цены. Если это поле не существует, то на RouteLeg плата не взимается.

speedReadingIntervals[]

object ( SpeedReadingInterval )

Интервалы скорочтения с подробным описанием плотности трафика. Применимо в случае настроек маршрутизации TRAFFIC_AWARE и TRAFFIC_AWARE_OPTIMAL . Интервалы охватывают всю полилинию RouteLg без перекрытия. Начальная точка указанного интервала совпадает с конечной точкой предыдущего интервала.

Пример:

polyline: A ---- B ---- C ---- D ---- E ---- F ---- G
speedReadingIntervals: [A,C), [C,D), [D,G).

Область просмотра

Окно просмотра широта-долгота, представленное двумя диагонально противоположными low и high точками. Окно просмотра считается замкнутой областью, т.е. включает в себя свою границу. Границы широты должны находиться в диапазоне от -90 до 90 градусов включительно, а границы долготы должны находиться в диапазоне от -180 до 180 градусов включительно. Различные случаи включают в себя:

  • Если low = high , окно просмотра состоит из этой единственной точки.

  • Если low.longitude > high.longitude , диапазон долготы инвертируется (окно просмотра пересекает линию долготы 180 градусов).

  • Если low.longitude = -180 градусов и high.longitude = 180 градусов, в окне просмотра отображаются все значения долготы.

  • Если low.longitude = 180 градусов и high.longitude = -180 градусов, диапазон долгот пуст.

  • Если low.latitude > high.latitude , диапазон широт пуст.

И low , и high должны быть заполнены, и представленное поле не может быть пустым (как указано в определениях выше). Пустое окно просмотра приведет к ошибке.

Например, это окно просмотра полностью охватывает Нью-Йорк:

{ "низкий": { "широта": 40,477398, "долгота": -74,259087}, "высокий": { "широта": 40,91618, "долгота": -73,70018 } }

Представление JSON
{
  "low": {
    object (LatLng)
  },
  "high": {
    object (LatLng)
  }
}
Поля
low

object ( LatLng )

Необходимый. Нижняя точка окна просмотра.

high

object ( LatLng )

Необходимый. Верхняя точка смотрового окна.

Результаты геокодирования

Содержит GeocodedWaypoints для начальной, конечной и промежуточных путевых точек. Заполняется только для адресных путевых точек.

Представление JSON
{
  "origin": {
    object (GeocodedWaypoint)
  },
  "destination": {
    object (GeocodedWaypoint)
  },
  "intermediates": [
    {
      object (GeocodedWaypoint)
    }
  ]
}
Поля
origin

object ( GeocodedWaypoint )

Исходная геокодированная путевая точка.

destination

object ( GeocodedWaypoint )

Геокодированная путевая точка назначения.

intermediates[]

object ( GeocodedWaypoint )

Список промежуточных геокодированных путевых точек, каждая из которых содержит поле индекса, соответствующее отсчитываемому от нуля положению путевой точки в том порядке, в котором они были указаны в запросе.

GeocodedWaypoint

Подробная информация о местах, используемых в качестве путевых точек. Заполняется только для адресных путевых точек. Включает сведения о результатах геокодирования для целей определения того, к какому адресу был геокодирован.

Представление JSON
{
  "geocoderStatus": {
    object (Status)
  },
  "type": [
    string
  ],
  "partialMatch": boolean,
  "placeId": string,
  "intermediateWaypointRequestIndex": integer
}
Поля
geocoderStatus

object ( Status )

Указывает код состояния, полученный в результате операции геокодирования.

type[]

string

Тип(ы) результата в виде нуля или более тегов типа. Поддерживаемые типы: https://developers.google.com/maps/documentation/geocoding/requests-geocoding#Types .

partialMatch

boolean

Указывает, что геокодер не вернул точное соответствие исходному запросу, хотя смог сопоставить часть запрошенного адреса. Вы можете проверить первоначальный запрос на наличие опечаток и/или неполного адреса.

placeId

string

Идентификатор места для этого результата.

intermediateWaypointRequestIndex

integer

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