Получить транзитный маршрут

Разработчики Европейской экономической зоны (ЕЭЗ)

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

Чем транзитные маршруты отличаются от других маршрутов

Маршруты общественного транспорта, запрашиваемые с помощью параметра travelMode, равным TRANSIT, отличаются от маршрутов с другими параметрами travelMode. Вы не можете запросить все те же объекты и параметры, а ответ возвращает другие поля по сравнению с другими маршрутами.

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

Запрос различий Различия в ответах
Промежуточные точки маршрута указывать нельзя. Включает сведения о транзите.
Невозможно получить экологически чистые маршруты Включает метаданные для каждого режима передвижения, содержащие сводку шагов для этого режима передвижения, в `stepsOverview` (чтобы запросить эти метаданные, используйте маску поля `routes.legs.stepsOverview`).
Невозможно указать, как и следует ли включать данные о дорожном движении.
Невозможно указать особенности маршрута, которые следует избегать.
Можно указать transitPreferences только для routingPreference . Подробности см. в разделе TransitPreferences .

Дополнительную информацию об ответе, возвращаемом API маршрутов, см. в разделе Обзор ответов транзитных маршрутов .

Чтобы получить транзитный маршрут

  1. Укажите пункт отправления и пункт назначения.

  2. Установите режим передвижения на транзит:

    travelMode: "TRANSIT"

  3. Добавьте маску поля, чтобы получить необходимые поля ответа. См. раздел Запрос необходимых полей маршрута общественного транспорта .

  4. При необходимости задайте дополнительные параметры. См. раздел «Задание параметров маршрута общественного транспорта» .

Запросите необходимые вам поля транзитного маршрута

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

Чтобы запросить эту информацию Используйте эту маску поля
Все детали маршрута 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

Примечание: transitFare предоставляется только в том случае, если API может определить информацию о стоимости проезда на всех этапах.

Локализованный текст для продолжительности и расстояния routes.localizedValues

Дополнительную информацию о настройке масок полей см. в разделе Выбор полей для возврата .

Установить параметры транзитного маршрута

Вот соответствующие параметры транзитных маршрутов:

Чтобы сделать это Используйте этот параметр Примечания
Выберите режим транзита travelMode: "TRANSIT" Обязательно. Узнать больше .
Установите время прибытия или отправления "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"

ИЛИ

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
Необязательно. Можно указать либо Arrival_time, либо Depart_time. Если ни одно из значений не указано, departure_time по умолчанию будет равен текущему времени выполнения ( now ). Время прибытия и отправления можно задать только в пределах следующего временного интервала, используя текущее время выполнения ( now ) в качестве точки отсчёта:
  • до 7 дней включительно до now
  • до 100 дней включительно после now
Время указывается в виде временной метки в формате RFC3339 UTC «Зулу». Подробнее

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

Включить альтернативные маршруты "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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}