Obtén una ruta de transporte público

Desarrolladores del Espacio Económico Europeo (EEE)

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, subterráneos y trenes, entre otros. Por lo general, una ruta de transporte público también incluye instrucciones para caminar hacia las estaciones de transporte público, desde ellas y entre ellas. Dado que 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.

En qué se diferencian las rutas de transporte público de otras rutas

Las rutas de transporte público, que se solicitan 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 viajes. Por lo tanto, cada instrucción de navegación es un paso. Una respuesta de ruta de transporte público es muy similar a las rutas con otros modos de viaje, con algunas diferencias clave:

Diferencias en la solicitud Diferencias en las respuestas
No puedes especificar puntos de referencia intermedios. Incluye detalles del transporte público.
No se pueden obtener rutas ecológicas Incluye metadatos para cada modo de viaje que contiene el resumen de los pasos para ese modo de viaje, en `stepsOverview` (para solicitar estos metadatos, usa la máscara de campo `routes.legs.stepsOverview`).
No se puede especificar cómo ni si se deben incluir los datos de tráfico
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 las rutas de transporte público.

Cómo obtener una ruta en transporte público

  1. Configura tu origen y destino.

  2. Establece el modo de viaje en transporte público:

    travelMode: "TRANSIT"

  3. Agrega una máscara de campo para obtener los campos de respuesta que deseas. Consulta Cómo solicitar los campos de ruta de transporte público que necesitas.

  4. Si es necesario, establece parámetros opcionales. Consulta Cómo establecer parámetros para una ruta de transporte público.

Solicita los campos de ruta de transporte público que necesites

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.

Cómo solicitar esta información 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 la 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: transitFare solo se proporciona si la API puede determinar la información de la tarifa del transporte público para todos los pasos.

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 devolverán.

Cómo establecer parámetros para una ruta de transporte público

Estos son los parámetros relevantes para las rutas de transporte público:

Para ello, Usa este parámetro Notas
Selecciona el modo de transporte público 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, departure_time se establece de forma predeterminada en la hora de ejecución actual (now). Puedes establecer las horas de llegada y salida solo dentro del siguiente período, con la hora de ejecución actual (now) como referencia:
  • hasta 7 días antes de now (inclusive)
  • hasta 100 días después de now (inclusive)
La hora se expresa como una marca de tiempo en formato RFC3339 UTC “Zulú”. Más información

Nota: Los horarios de transporte público cambian con frecuencia, los viajes en transporte público disponibles pueden cambiar con el tiempo y no se garantiza que se proporcionen resultados coherentes para las predicciones con mucha anticipación.

Incluir rutas alternativas "computeAlternativeRoutes": true Opcional. Se establece en 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 devueltas 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 transporte preferido.

Opcional. Especifica los medios de transporte público preferidos. Más información
Especifica las preferencias de la ruta de transporte público "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} Opcional. Especifica las preferencias de enrutamiento de transporte público. Más información

Ejemplo: Cómo obtener una ruta en transporte público

En el siguiente ejemplo, se obtiene una ruta en transporte público 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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}