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

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

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

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

Транзитные маршруты, которые вы запрашиваете, устанавливая 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, либо Deway_time. Если ни одно из времени не указано, departure_time по умолчанию будет равен текущему времени выполнения ( now ). Вы можете задать время прибытия и отправления только в пределах следующего временного окна, используя текущее время выполнения ( now ) в качестве точки отсчета:
  • до 7 дней включительно до now
  • до и включительно 100 дней после now
Время выражается как временная метка в формате RFC3339 UTC "Zulu". Узнать больше

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

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