Маршрут общественного транспорта содержит инструкции по навигации с использованием доступных в регионе видов общественного транспорта. К таким видам транспорта могут относиться автобусы, метро, поезда и другие виды транспорта. Маршрут общественного транспорта обычно также включает инструкции по пешему маршруту до остановок общественного транспорта, от них и между ними. Поскольку маршрут общественного транспорта обычно предполагает использование нескольких видов транспорта, способ запроса маршрута и некоторые части ответа различаются.
Чем транзитные маршруты отличаются от других маршрутов
Маршруты общественного транспорта, запрашиваемые с помощью параметра 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, либо Depart_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 } }, {}, {}, {}, {}, {}, {} ] } ] } ] }