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ôs, trens, entre outros. Um trajeto de transporte público também geralmente inclui instruções sobre como caminhar para, de e entre estações de transporte público. Como um trajeto de transporte público geralmente requer 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.

Diferenças entre trajetos de transporte público e outros trajetos

Os trajetos de transporte público, que você solicita ao definir um "transporte" como transporte público, são diferentes dos trajetos que usam outras opções de transporte público. 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 uma instrução de navegação consistente 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 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 foi possível encontrar trajetos ecológicos Inclui metadados de cada meio de transporte que contém o resumo das etapas em "stepsOverview". Para solicitar esses metadados, use a máscara de campo "routes.legs.stepsOverview".
Não é possível especificar como e se dados de tráfego devem ser incluídos
Não é possível especificar elementos de trajeto 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 Revisar respostas de rotas de transporte público.

Para ver 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 exibir 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 rota 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 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 em cada etapa routes.legs.steps.travelMode
Tarifa estimada para cada etapa e trajeto, além da tarifa localizada routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

Observação: o transitFare só vai ser fornecido se a API puder determinar informações sobre as tarifas de transporte público de todas as etapas.

Texto localizado de acordo com a duração e a distância routes.localizedValues

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

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

Estes são 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"

OR

"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 usará o tempo de execução atual (now). Só é possível definir os horários de chegada e partida dentro da janela de tempo a seguir, com o tempo de execução atual (now) como referência:
  • Até 7 dias antes de now
  • até 100 dias após now
O horário é expresso 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 público, dependendo da eficiência do trajeto e da disponibilidade dele.

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

Exemplo: conferir um trajeto no transporte público

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

  • Especifica as preferências de viagem 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 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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}