Ver uma rota de transporte público

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ô e trens, entre outros. Trajetos de transporte público também costumam incluir instruções de como ir a pé para, de e para 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 de solicitação do trajeto e algumas partes da resposta são diferentes.

Como os trajetos de transporte público diferem de outros trajetos

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

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

Diferenças nas solicitações Diferenças de resposta
Não é possível especificar waypoints intermediários. Inclui detalhes de transporte público.
Não é possível encontrar trajetos ecológicos Inclua metadados de cada meio de transporte com o resumo das etapas desse meio de transporte em "stepsOverview". Para solicitar esses metadados, use a máscara de campo "routes.legs.stepsOverview".
Não é possível especificar como e se incluir dados de tráfego
Não é possível especificar os elementos de rota a serem evitados
Só é possível especificar transitPreferences para routingPreference. Para mais detalhes, consulte [TransitPreferences](reference/rest/v2/TransitPreferences).

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

Para consultar 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.

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

Use máscaras de campo para solicitar os campos de trajetos de transporte público necessários. 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 Usar 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 para cada trecho routes.legs.steps.startLocation
Local final para cada trecho routes.legs.steps.endLocation
Polilinha do trajeto para cada etapa routes.legs.steps.polyline
Tipo de transporte público usado em 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: o transitFare só será fornecido se a API puder determinar informações de tarifas 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 os campos a serem retornados.

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

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

Para fazer isto Usar este parâmetro Observações
Selecionar meio 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. Você pode especificar arrival_time ou departure_time. Se nenhum desses horários for especificado, o departure_time será definido por padrão como o tempo de execução atual (now). Só é possível definir horários de chegada e partida dentro da janela de tempo seguinte, com o tempo de execução atual (now) como referência:
  • até 7 dias antes de now, inclusive
  • até 100 dias após now
A hora é expressa como um carimbo de data/hora no formato UTC "Zulu" RFC3339. Saiba mais
Incluir rotas alternativas "computeAlternativeRoutes": true Opcional. Defina como verdadeiro para que a API Routes calcule até três rotas adicionais, quando disponíveis. Saiba mais
Especifique 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 preferencial, os trajetos retornados ainda poderão usar outros meios de transporte, mesmo que usem outros, dependendo da eficiência e da disponibilidade da viagem preferida.

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

Exemplo: ver um trajeto no transporte público

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

  • Especifica preferências de viagem em trem e menos caminhada.

  • Solicita rotas alternativas.

  • Fornece uma máscara de campo que retorna os detalhes do 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 campos route.legs.steps.transitDetails para as duas rotas:

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