Транзитный маршрут предоставляет инструкции по навигации с использованием вариантов общественного транспорта, доступных в регионе. Варианты транзита могут включать автобусы, метро и поезда, среди прочего. Транзитный маршрут также обычно включает инструкции по пешим прогулкам к транзитным станциям, от них и между ними. Поскольку транзитный маршрут обычно требует от вас путешествовать, используя более одного вида транспорта, способ запроса маршрута и некоторые части ответа различаются.
Чем транзитные маршруты отличаются от других маршрутов
Транзитные маршруты, которые вы запрашиваете, устанавливая travelMode в TRANSIT, отличаются от маршрутов, использующих другие параметры travelMode. Вы не можете запросить все те же объекты и параметры, а ответ возвращает другие поля по сравнению с другими маршрутами.
В API маршрутов шаги последовательно представляют собой одну навигационную инструкцию для всех типов поездок. Поэтому каждая навигационная инструкция — это шаг. Ответ транзитного маршрута очень похож на маршруты с другими режимами поездок, но с несколькими ключевыми отличиями:
Запрос различий | Различия в ответах |
---|---|
Промежуточные точки маршрута указывать нельзя. | Включает сведения о транзите. |
Невозможно получить экологически чистые маршруты | Включает метаданные для каждого режима передвижения, содержащие сводку шагов для этого режима передвижения, в `stepsOverview` (чтобы запросить эти метаданные, используйте маску поля `routes.legs.stepsOverview`). |
Невозможно указать, как и следует ли включать данные о трафике. | |
Невозможно указать особенности маршрута, которые следует избегать | |
Можно указать только transitPreferences для routingPreference . Подробности см. в разделе TransitPreferences . |
Дополнительную информацию об ответе, возвращаемом API маршрутов, см. в разделе Обзор ответов транзитных маршрутов .
Чтобы получить транзитный маршрут
Укажите пункт отправления и пункт назначения.
Установите режим передвижения на транзит:
travelMode: "TRANSIT"
Добавьте маску поля, чтобы получить нужные вам поля ответа. См. Запрос необходимых вам полей транзитного маршрута .
При необходимости задайте дополнительные параметры. См. Задайте параметры для транзитного маршрута .
Запросите необходимые вам поля транзитного маршрута
Запросите необходимые вам поля транзитного маршрута с помощью масок полей. В следующей таблице приведены некоторые предлагаемые ответы для транзитного маршрута и маска поля, которую следует использовать для их запроса.
Чтобы запросить эту информацию | Используйте эту маску поля |
---|---|
Все детали маршрута | routes.* |
Все детали транзита | routes.legs.steps.transitDetails |
Начальная точка для каждого этапа | routes.legs.steps.startLocation |
Конечное местоположение для каждого этапа | routes.legs.steps.endLocation |
Полилиния маршрута для каждого шага | routes.legs.steps.polyline |
Тип транзита, используемый для каждого шага | routes.legs.steps.travelMode |
Расчетная стоимость проезда для каждого этапа и маршрута, а также локализованная расчетная стоимость проезда | routes.travel_advisory.transitFare localized routes.localizedValues.transitFare Примечание: |
Локализованный текст для продолжительности и расстояния | routes.localizedValues |
Дополнительную информацию о настройке масок полей см. в разделе Выбор полей для возврата .
Установить параметры транзитного маршрута
Вот соответствующие параметры для транзитных маршрутов:
Чтобы сделать это | Используйте этот параметр | Примечания |
---|---|---|
Выберите режим транзита | travelMode: "TRANSIT" | Обязательно. Узнать больше . |
Установите время прибытия или отправления | "arrivalTime": "yyyy-mm-ddThh:mm:ssZ" ИЛИ "departureTime": "yyyy-mm-ddThh:mm:ssZ" | Необязательно. Вы можете указать либо Arrival_time, либо Deway_time. Если ни одно из времени не указано, departure_time по умолчанию будет равен текущему времени выполнения ( now ). Вы можете задать время прибытия и отправления только в пределах следующего временного окна, используя текущее время выполнения ( now ) в качестве точки отсчета:
Примечание: расписание общественного транспорта часто меняется, доступные маршруты общественного транспорта могут со временем меняться, и нет гарантии предоставления последовательных результатов для прогнозов на большой срок. |
Включить альтернативные маршруты | "computeAlternativeRoutes": true | Необязательно. Установите значение true, чтобы Compute Routes вычислял до 3 дополнительных маршрутов, если они доступны. Узнать больше |
Укажите предпочтения по типу транзита | "transitPreferences": { allowedTravelModes: ["BUS","SUBWAY","TRAIN","LIGHT_RAIL","RAIL"]} Примечание: если вы укажете предпочтительный способ передвижения, обратные маршруты могут по-прежнему использовать другие виды общественного транспорта или даже только другие виды общественного транспорта в зависимости от эффективности маршрута и доступности предпочтительного способа передвижения. | Необязательно. Укажите предпочтительные способы передвижения. Узнать больше |
Укажите предпочтения по маршруту транзита | "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} | Необязательно. Укажите предпочтения по маршрутизации транзита. Узнать больше |
Пример: Получить маршрут на общественном транспорте
В следующем примере маршрут транзита формируется со следующими параметрами:
Указывает предпочтения для поездок на поезде и уменьшения пеших прогулок.
Запрашивает альтернативные маршруты.
Предоставляет маску поля, которая возвращает сведения о транзите:
curl -X POST -H 'content-type: application/json' -d '{ "origin": { "address": "Humberto Delgado Airport, Portugal" }, "destination": { "address": "Basílica of Estrela, Praça da Estrela, 1200-667 Lisboa, Portugal" }, "travelMode": "TRANSIT", "computeAlternativeRoutes": true, "transitPreferences": { routingPreference: "LESS_WALKING", allowedTravelModes: ["TRAIN"] }, }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.legs.steps.transitDetails' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
В ответе показаны поля route.legs.steps.transitDetails
для двух маршрутов:
{ "routes": [ { "legs": [ { "steps": [ {}, {}, {}, { "transitDetails": { "stopDetails": { "arrivalStop": { "name": "Saldanha", "location": { "latLng": { "latitude": 38.73532, "longitude": -9.14543 } } }, "arrivalTime": "2023-08-26T10:49:42Z", "departureStop": { "name": "Aeroporto", "location": { "latLng": { "latitude": 38.769047799999996, "longitude": -9.1284593 } } }, "departureTime": "2023-08-26T10:32:10Z" }, "localizedValues": { "arrivalTime": { "time": { "text": "11:49" }, "timeZone": "Europe/Lisbon" }, "departureTime": { "time": { "text": "11:32" }, "timeZone": "Europe/Lisbon" } }, "headsign": "São Sebastião", "transitLine": { "agencies": [ { "name": "Metropolitano de Lisboa, E.P.E.", "phoneNumber": "+351 21 350 0115", "uri": "https://www.metrolisboa.pt/" } ], "name": "Vermelha", "color": "#f23061", "nameShort": "Vm", "textColor": "#000000", "vehicle": { "name": { "text": "Metrô" }, "type": "SUBWAY", "iconUri": "//maps.gstatic.com/mapfiles/transit/iw2/6/subway2.png" } }, "stopCount": 11 } }, {}, { "transitDetails": { "stopDetails": { "arrivalStop": { "name": "Rato", "location": { "latLng": { "latitude": 38.7201022, "longitude": -9.1540562 } } }, "arrivalTime": "2023-08-26T11:01:37Z", "departureStop": { "name": "Saldanha", "location": { "latLng": { "latitude": 38.73527, "longitude": -9.1455200000000012 } } }, "departureTime": "2023-08-26T10:57:57Z" }, "localizedValues": { "arrivalTime": { "time": { "text": "12:01" }, "timeZone": "Europe/Lisbon" }, "departureTime": { "time": { "text": "11:57" }, "timeZone": "Europe/Lisbon" } }, "headsign": "Rato", "transitLine": { "agencies": [ { "name": "Metropolitano de Lisboa, E.P.E.", "phoneNumber": "+351 21 350 0115", "uri": "https://www.metrolisboa.pt/" } ], "name": "Amarela", "color": "#f2c200", "nameShort": "Am", "textColor": "#000000", "vehicle": { "name": { "text": "Metrô" }, "type": "SUBWAY", "iconUri": "//maps.gstatic.com/mapfiles/transit/iw2/6/subway2.png" } }, "stopCount": 4 } }, {}, {}, {}, {}, {}, {} ] } ] } ] }