Una ruta de transporte público proporciona instrucciones de navegación con las opciones de transporte público disponibles en la región. Las opciones de transporte público pueden incluir autobuses, metros y trenes, entre otros. Una ruta en transporte público también suele incluir instrucciones para caminar hacia, desde y entre las estaciones de transporte público. Como una ruta de transporte público suele requerir que viajes con más de un medio de transporte, la forma en que solicitas la ruta y algunas partes de la respuesta son diferentes.
Diferencias entre las rutas de tránsito y otras rutas
Las rutas de transporte público, que solicitas configurando un travelMode de TRANSIT, difieren de las rutas que usan diferentes opciones de travelMode. No puedes solicitar todos los mismos objetos y opciones, y la respuesta devuelve campos diferentes en comparación con otras rutas.
En la API de Routes, los pasos son siempre una instrucción de navegación en todos los tipos de viaje. Por lo tanto, cada instrucción de navegación es un paso. Una respuesta de ruta en transporte público es muy similar a las rutas con otros medios de transporte, con algunas diferencias clave:
| Diferencias en las solicitudes | Diferencias en las respuestas |
|---|---|
| No puedes especificar puntos de referencia intermedios. | Incluye detalles de transporte público. |
| No se pueden obtener rutas ecológicas | Incluye metadatos para cada medio de transporte que contiene el resumen de los pasos para ese medio de transporte, en `stepsOverview` (para solicitar estos metadatos, usa la máscara de campo `routes.legs.stepsOverview`). |
| No se puede especificar cómo incluir los datos de tráfico ni si se deben incluir | |
| No se pueden especificar las características de la ruta que se deben evitar | |
Solo se puede especificar transitPreferences para
routingPreference. Para obtener más información, consulta
TransitPreferences. |
Para obtener más información sobre la respuesta que devuelve la API de Routes, consulta Revisa las respuestas de rutas en transporte público.
Cómo obtener una ruta de transporte público
Establece tu origen y destino.
Establece el modo de viaje en transporte público:
travelMode: "TRANSIT"Agrega una máscara de campo para obtener los campos de respuesta que deseas. Consulta Solicita los campos de ruta de transporte público que necesitas.
Si es necesario, establece parámetros opcionales. Consulta Establece parámetros para una ruta de transporte público.
Solicita los campos de ruta de transporte público que necesitas
Solicita los campos de ruta de transporte público que necesitas con máscaras de campo. En la siguiente tabla, se incluyen algunas respuestas sugeridas para una ruta de transporte público y la máscara de campo que se debe usar para solicitarlas.
| Para solicitar esta información, sigue estos pasos: | Usa esta máscara de campo |
|---|---|
| Todos los detalles de la ruta | routes.* |
| Todos los detalles del transporte público | routes.legs.steps.transitDetails |
| Ubicación de inicio de cada tramo | routes.legs.steps.startLocation |
| Ubicación final de cada tramo | routes.legs.steps.endLocation |
| Polilínea de ruta para cada paso | routes.legs.steps.polyline |
| Tipo de transporte público que se usa en cada paso | routes.legs.steps.travelMode |
| Tarifa estimada para cada paso y la ruta, y Tarifa estimada localizada | routes.travel_advisory.transitFare
localized routes.localizedValues.transitFare
Nota: |
| Texto localizado para la duración y la distancia | routes.localizedValues |
Para obtener más información sobre cómo configurar máscaras de campo, consulta Elige los campos que se mostrarán.
Establece parámetros para una ruta de transporte público
Estos son los parámetros relevantes para las rutas de transporte público:
| Para ello, sigue estos pasos: | Usa este parámetro | Notas |
|---|---|---|
| Selecciona el medio de transporte | travelMode: "TRANSIT" |
Obligatorio. Obtén más información. |
| Cómo establecer una hora de llegada o salida | "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"
O "departureTime": "yyyy-mm-ddThh:mm:ssZ" |
Opcional. Puedes especificar arrival_time o departure_time. Si
no se especifica ninguna hora, el valor predeterminado de departure_time es la
hora de ejecución actual (now). Solo puedes establecer las horas de llegada y
salida dentro del siguiente período, con la hora de ejecución actual (now) como referencia:
Nota: Los horarios del transporte público cambian con frecuencia, los viajes disponibles en transporte público pueden cambiar con el tiempo y no se garantiza que se proporcionen resultados coherentes para las predicciones con mucha anticipación. |
| Incluye rutas alternativas | "computeAlternativeRoutes": true |
Opcional. Establécelo como verdadero para que Compute Routes calcule hasta 3 rutas adicionales, cuando estén disponibles. Más información |
| Especifica las preferencias para el tipo de transporte público | "transitPreferences": { allowedTravelModes: ["BUS","SUBWAY","TRAIN","LIGHT_RAIL","RAIL"]}
Nota: Si especificas un medio de transporte preferido, es posible que las rutas que se devuelvan sigan usando otros medios de transporte, o incluso que solo usen otros medios de transporte, según la eficiencia de la ruta y la disponibilidad del medio de transporte preferido. |
Opcional. Especifica los medios de transporte público preferidos. Más información |
| Especifica las preferencias para la ruta en transporte público | "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} |
Opcional. Especifica las preferencias de enrutamiento de transporte público. Más información |
Ejemplo: Obtén una ruta en transporte público
En el siguiente ejemplo, se obtiene una ruta en tránsito con los siguientes parámetros:
Especifica las preferencias para viajar en tren y caminar menos.
Solicita rutas alternativas.
Proporciona una máscara de campo que devuelve los detalles del 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'
La respuesta muestra los campos route.legs.steps.transitDetails para las dos rutas:
{ "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 } }, {}, {}, {}, {}, {}, {} ] } ] } ] }