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

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

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

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

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

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

Запрос различий Различия в ответах
Вы не можете указывать промежуточные путевые точки. Включает информацию о транспортировке.
Невозможно найти экологически чистые маршруты. Включает метаданные для каждого вида транспорта, содержащие краткое описание шагов для этого вида транспорта, в поле `stepsOverview` (для запроса этих метаданных используйте маску поля `routes.legs.stepsOverview`).
Невозможно указать, как и следует ли включать данные о дорожном движении.
Невозможно указать особенности маршрута, которых следует избегать.
Для routingPreference можно указать только transitPreferences . Подробнее см. 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, либо departure_time. Если ни одно из времен не указано, departure_time по умолчанию принимает текущее время выполнения ( now ). Вы можете установить время прибытия и отправления только в пределах следующего временного окна, используя текущее время выполнения ( now ) в качестве эталонного:
  • до 7 дней включительно до now
  • вплоть до 100 дней с now включительно
Время выражается в виде метки времени в формате RFC3339 UTC "Zulu". Подробнее

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

Укажите альтернативные маршруты "computeAlternativeRoutes": true Необязательно. Установите значение true, чтобы функция «Вычислить маршруты» вычисляла до 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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}