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 as estações de transporte público. Como um trajeto de transporte público geralmente exige que você use mais de um meio de transporte, a forma como você solicita o trajeto e algumas partes da resposta são diferentes.
Como as rotas de trânsito diferem de outras rotas
As rotas de transporte público, que você solicita definindo um travelMode como TRANSIT, são diferentes das rotas 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 em comparação com outras rotas.
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 rota de transporte público é muito semelhante às rotas 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 acessar trajetos ecológicos | Inclui metadados para cada meio de transporte que contém o resumo das etapas para esse 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 os dados de trânsito devem ser incluídos | |
| Não é possível especificar 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 rotas de transporte público.
Para ver um trajeto de transporte público
Defina sua origem e destino.
Defina o modo de viagem como transporte público:
travelMode: "TRANSIT"Adicione uma máscara de campo para receber os campos de resposta que você quer. Consulte Solicitar os campos de roteamento transitivo necessários.
Se necessário, defina parâmetros opcionais. Consulte Definir parâmetros para um roteamento transitivo.
Solicitar os campos de roteamento transitivo necessários
Solicite os campos de roteamento transitivo 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 | Usar esta máscara de campo |
|---|---|
| Todos os detalhes da rota | routes.* |
| Todos os detalhes do 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 de 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 rota e tarifa estimada localizada | routes.travel_advisory.transitFare
localized routes.localizedValues.transitFare
Observação: |
| Texto localizado para duração e distância | routes.localizedValues |
Para mais informações sobre como definir máscaras de campo, consulte Escolher campos para retornar.
Definir parâmetros para um trajeto de transporte público
Estes são os parâmetros relevantes para rotas de transporte público:
| Para fazer isso: | Use 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. É possível especificar arrival_time ou departure_time. Se
nenhum horário for especificado, o departure_time vai usar como padrão o
horário de execução atual (now). É possível definir os horários de chegada e
partida apenas dentro da seguinte janela de tempo, com o horário de execução
atual (now) como referência:
Observação: os horários de transporte público mudam com frequência, as viagens disponíveis podem mudar ao longo do tempo e não há garantia de resultados consistentes para previsões com muita antecedência. |
| Incluir rotas alternativas | "computeAlternativeRoutes": true |
Opcional. Defina como verdadeiro para que o 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 preferencial, as rotas retornadas ainda poderão usar outros meios de transporte público, ou até mesmo usar apenas outros meios, dependendo da eficiência da rota e da disponibilidade do meio de transporte preferencial. |
Opcional. Especificar os meios de transporte público preferidos. Saiba mais |
| Especificar preferências para o roteamento transitivo | "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} |
Opcional. Especifique as preferências de roteamento de transporte público. Saiba mais |
Exemplo: ver um trajeto de transporte público
O exemplo a seguir mostra como receber um trajeto de transporte público com os seguintes parâmetros:
Especifica preferências para viagens de 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 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 } }, {}, {}, {}, {}, {}, {} ] } ] } ] }