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. Uma rota de transporte público também inclui instruções sobre como caminhar até, de e entre as estações. Como um trajeto de transporte público geralmente exige que você viaje usando mais de um meio de transporte, a maneira de solicitar o trajeto e algumas partes da resposta são diferentes.
Como as rotas de transporte público são diferentes de outras rotas
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 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 a rotas com outros modos de viagem, com algumas diferenças importantes:
Diferenças de solicitações | Diferenças de resposta |
---|---|
Não é possível especificar pontos de referência intermediários. | Inclui detalhes de trânsito. |
Não é possível acessar trajetos ecológicos | Inclui metadados para cada modo de viagem que contém o resumo das etapas para esse modo de viagem, 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 serão incluídos | |
Não é possível especificar recursos de trajeto a serem evitados | |
Só é possível especificar transitPreferences para routingPreference . Para detalhes, consulte
TransitPreferences . |
Para mais informações sobre a resposta retornada pela API Routes, consulte Analisar respostas de rotas de transporte público.
Para conferir um trajeto de transporte público
Defina a origem e o destino.
Defina o meio de transporte como transporte público:
travelMode: "TRANSIT"
Adicione uma máscara de campo para receber os campos de resposta desejados. Consulte Solicitar os campos de rota de transporte público necessários.
Se necessário, defina parâmetros opcionais. Consulte Definir parâmetros para uma rota de trânsito.
Solicitar 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 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 de cada trecho | routes.legs.steps.startLocation |
Local de destino para cada trecho | routes.legs.steps.endLocation |
Polilinha de rota 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: |
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
Confira os parâmetros relevantes para trajetos de transporte público:
Para fazer isso | Use este parâmetro | Observações |
---|---|---|
Selecionar 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 dos horários for especificado, o departure_time vai usar o horário de execução atual (now ). Você só pode definir horários de chegada e partida 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 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 o Compute 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 meio de transporte preferido, as rotas retornadas ainda poderão usar outros meios, dependendo da eficiência da rota 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 trajeto de transporte público. Saiba mais |
Exemplo: ver um trajeto de transporte público
O exemplo a seguir recebe uma rota em trânsito com os seguintes parâmetros:
Especifica preferências para viagens de trem e menos caminhadas.
Solicita trajetos alternativos.
Fornece uma máscara de campo que retorna os detalhes do trânsito:
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 } }, {}, {}, {}, {}, {}, {} ] } ] } ] }