Uma rota 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. Uma rota de transporte público também costuma incluir instruções sobre como ir a pé até, de e entre estações de transporte público. Como uma rota de transporte público geralmente exige que você use mais de um meio de transporte, a forma de solicitar a rota e algumas partes da resposta são diferentes.
Como as rotas de transporte público são diferentes das outras rotas
As rotas de transporte público, que você solicita definindo um travelMode de 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 quando comparada a outras rotas.
Na API Routes, as etapas são sempre uma instrução de navegação em todos os tipos de viagem. Cada instrução de navegação é uma etapa. Uma resposta de rota de transporte público é muito semelhante a rotas com outros modos de transporte, com algumas diferenças importantes:
Solicitar diferenças | Diferenças na resposta |
---|---|
Não é possível especificar pontos de passagem intermediários. | Inclui detalhes de transporte público. |
Não é possível acessar trajetos ecológicos | Inclui metadados para cada modo de transporte que contém o resumo das etapas para esse modo 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 é possível incluir dados de tráfego | |
Não é possível especificar recursos de rota 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 Revise as respostas de rotas de transporte público.
Para conferir uma rota de transporte público
Defina a origem e o destino.
Defina o modo de transporte 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 rota de transporte público necessários.
Se necessário, defina parâmetros opcionais. Consulte Definir parâmetros de uma rota de transporte público.
Solicite os campos de rota de transporte público necessários
Solicite os campos de rota de transporte público necessários usando máscaras de campo. A tabela a seguir contém algumas respostas sugeridas para uma rota 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 etapa | routes.legs.steps.startLocation |
Local de término de cada etapa | routes.legs.steps.endLocation |
Rota da polilinha 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 a rota, e Tarifa estimada localizada | routes.travel_advisory.transitFare
localized routes.localizedValues.transitFare
Observação: 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 uma rota 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 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 padrão de departure_time será o
tempo de execução atual (now ). É possível definir os horários de chegada e
partida apenas dentro da janela de tempo a seguir, com o tempo de execução
atual (now ) como referência:
|
Incluir rotas alternativas | "computeAlternativeRoutes": true |
Opcional. Defina como "true" para que a API Routes calcule até três rotas 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 modo de transporte preferencial, as rotas retornadas ainda poderão usar outros modos de transporte, dependendo da eficiência da rota e da disponibilidade do transporte preferencial. |
Opcional. Especifique os meios de transporte preferidos. Saiba mais |
Especificar preferências para a rota de transporte público | "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} |
Opcional. Especifique as preferências de trajeto de transporte público. Saiba mais |
Exemplo: receber uma rota no transporte público
O exemplo a seguir recebe uma rota no transporte público com os seguintes parâmetros:
Especifica preferências para viajar de trem e caminhar menos.
Solicita rotas alternativas.
Fornece uma máscara de campo que retorna os detalhes do transporte:
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 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 } }, {}, {}, {}, {}, {}, {} ] } ] } ] }