Ver uma rota de transporte público

Desenvolvedores do Espaço Econômico Europeu (EEE)

Um trajeto de transporte público fornece instruções de navegação usando as opções de transporte público disponíveis na região. As opções de transporte público podem incluir ônibus, metrôs e trens, entre outros. Um trajeto de transporte público também costuma incluir instruções sobre como caminhar até, de e entre estações de transporte público. Como um trajeto de transporte público normalmente exige que você viaje usando mais de um meio de transporte, a forma como você solicita o trajeto e algumas partes da resposta são diferentes.

Como os trajetos de transporte público são diferentes de outros trajetos

Os trajetos de transporte público, que você solicita definindo um travelMode de TRANSIT, são diferentes dos trajetos que usam outras opções de travelMode. Não é possível solicitar todos os mesmos objetos e opções, e a resposta retorna campos diferentes, quando comparada a outros trajetos.

Na API Routes, as etapas são sempre uma instrução de navegação em todos os tipos de viagem. Portanto, cada instrução de navegação é uma etapa. Uma resposta de trajeto de transporte público é muito semelhante a trajetos com outros meios de transporte, com algumas diferenças importantes:

Diferenças de solicitação Diferenças de resposta
Não é possível especificar waypoints intermediários. Inclui detalhes de transporte público.
Não é possível receber trajetos ecológicos Inclui metadados para cada meio de transporte que contém o resumo das etapas desse meio de transporte, no `stepsOverview` (para solicitar esses metadados, use a máscara de campo `routes.legs.stepsOverview`).
Não é possível especificar como e se as informações de trânsito serão incluídas
Não é possível especificar os recursos de trajeto a serem evitados
Só é possível especificar transitPreferences para routingPreference. Para mais detalhes, consulte TransitPreferences.

Para mais informações sobre a resposta retornada pela API Routes, consulte Analisar respostas de trajetos de transporte público.

Para receber um trajeto de transporte público

  1. Defina a origem e o destino.

  2. Defina o meio de transporte como transporte público:

    travelMode: "TRANSIT"

  3. Adicione uma máscara de campo para receber os campos de resposta desejados. Consulte Solicitar os campos de trajeto de transporte público necessários.

  4. Se necessário, defina parâmetros opcionais. Consulte Definir parâmetros para um trajeto de transporte público.

Solicitar os campos de trajeto de transporte público necessários

Solicite os campos de trajeto de transporte público necessários usando máscaras de campo. A tabela a seguir contém algumas respostas sugeridas para um trajeto de transporte público e a máscara de campo a ser usada para solicitá-las.

Para solicitar essas informações Use esta máscara de campo
Todos os detalhes do trajeto routes.*
Todos os detalhes de transporte público routes.legs.steps.transitDetails
Local de início de cada trecho routes.legs.steps.startLocation
Local de término de cada trecho routes.legs.steps.endLocation
Polilinha do trajeto para cada etapa routes.legs.steps.polyline
Tipo de transporte público usado para cada etapa routes.legs.steps.travelMode
Tarifa estimada para cada etapa e o trajeto, e tarifa estimada localizada routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

Observação: transitFare só é fornecido se a API puder determinar informações de tarifa de transporte público para todas as etapas.

Texto localizado para duração e distância routes.localizedValues

Para mais informações sobre como definir máscaras de campo, consulte Escolher campos a serem retornados.

Definir parâmetros para um trajeto de transporte público

Confira os parâmetros relevantes para trajetos de transporte público:

Para fazer isto Use este parâmetro Observações
Selecionar o modo de transporte público travelMode: "TRANSIT" Obrigatório. Saiba mais.
Definir um horário de chegada ou partida "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"

OU

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
Opcional. É possível especificar arrival_time ou departure_time. Se nenhum horário for especificado, o departure_time será definido como o horário de execução atual (now). É possível definir horários de chegada e partida apenas na janela de tempo a seguir, com o horário de execução atual (now) como referência:
  • até e incluindo 7 dias antes de now
  • até e incluindo 100 dias após now
O horário é expresso como um carimbo de data/hora no formato Zulu UTC RFC3339. Saiba mais

Observação: os horários de transporte público mudam com frequência, as viagens de transporte público disponíveis podem mudar com o tempo e não há garantia de fornecer resultados consistentes para previsões com muita antecedência.

Incluir trajetos alternativos "computeAlternativeRoutes": true Opcional. Defina como "true" para que a API Compute Routes calcule até três trajetos adicionais, quando disponíveis. Saiba mais
Especificar preferências para o tipo de transporte público "transitPreferences": { allowedTravelModes: ["BUS","SUBWAY","TRAIN","LIGHT_RAIL","RAIL"]}

Observação: se você especificar um meio de transporte preferido, os trajetos retornados ainda poderão usar outros meios de transporte, ou até mesmo usar apenas outros meios de transporte, dependendo da eficiência do trajeto e da disponibilidade do meio de transporte preferido.

Opcional. Especifique os meios de transporte público preferidos. Saiba mais
Especificar preferências para o trajeto de transporte público "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} Opcional. Especifique as preferências de roteamento de transporte público. Saiba mais

Exemplo: receber um trajeto de transporte público

O exemplo a seguir recebe um trajeto de transporte público com os seguintes parâmetros:

  • Especifica preferências para viagens de trem e menos caminhada.

  • Solicita trajetos alternativos.

  • Fornece uma máscara de campo que retorna os detalhes de transporte público:

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'

A resposta mostra os campos route.legs.steps.transitDetails para os dois trajetos:

{
  "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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}