Obtén una ruta de transporte público

Una ruta de transporte público proporciona instrucciones de navegación a través de las opciones de transporte público disponibles en la región. Las opciones de transporte público pueden incluir autobuses, metros y trenes, entre otras. Una ruta de transporte público también suele incluir instrucciones para ir a pie, desde las estaciones de transporte público o entre las estaciones de transporte público. Dado que una ruta de transporte público generalmente requiere que viajes utilizando 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 transporte público y las demás

Las rutas de transporte público, que solicitas mediante la configuración de TravelMode de TRANSIT, difieren de las rutas que usan diferentes opciones de TravelMode. No puedes solicitar los mismos objetos y opciones, y la respuesta muestra campos diferentes, en comparación con otras rutas.

En la API de Routes, los pasos son siempre una instrucción de navegación para todos los tipos de viaje. Por lo tanto, cada instrucción de navegación es un paso. La respuesta de una ruta de transporte público es muy similar a las rutas que tienen otros medios de transporte, con algunas diferencias clave:

Diferencias entre las solicitudes 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 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 y si incluir datos de tráfico
No se pueden especificar los elementos de ruta que se deben evitar
Solo se puede especificar transitPreferences para routingPreference. Para obtener más información, consulta [TransitPreferences](reference/rest/v2/TransitPreferences).

Para obtener más información sobre la respuesta que muestra la API de Routes, consulta Revisa las respuestas de las rutas de transporte público.

Cómo obtener una ruta de transporte público

  1. Establece el origen y el destino.

  2. Configura el medio de transporte como transporte público:

    travelMode: "TRANSIT"

  3. Agrega una máscara de campo para obtener los campos de respuesta que deseas. Consulta Solicita los campos de rutas de transporte público que necesitas.

  4. Si es necesario, configura parámetros opcionales. Consulta Establece parámetros para una ruta de transporte público.

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

Solicita los campos de rutas de transporte público que necesites con máscaras de campo. La siguiente tabla contiene algunas respuestas sugeridas para una ruta de transporte público y la máscara de campo que se debe usar a fin de solicitarlas.

Cómo solicitar esta información Usar esta máscara de campo
Detalles de todas las rutas routes.*
Todos los detalles del transporte público routes.legs.steps.transitDetails
Ubicación inicial de cada etapa routes.legs.steps.startLocation
Ubicación final de cada etapa routes.legs.steps.endLocation
Polilínea de ruta para cada paso routes.legs.steps.polyline
Tipo de transporte público usado 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 sobre las tarifas de 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 las 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 hacer lo siguiente Usa este parámetro Notas
Seleccionar modo de transporte público travelMode: "TRANSIT" Obligatorio. Más información.
Establece 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 especificas 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 del now, inclusive
  • hasta 100 días después de now (inclusive)
La hora se expresa como una marca de tiempo en el formato RFC3339 UTC “Zulú”. Más información
Incluir rutas alternativas "computeAlternativeRoutes": true Opcional. Se configura como verdadero para que la API de 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 muestran sigan usando otros medios de transporte público, incluso solo esos medios, en función de la eficacia de la ruta y de la disponibilidad del viaje preferido.

Opcional. Especifica los medios de transporte preferidos. Más información
Especifica las preferencias para la ruta de transporte público "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} Opcional. Especificar preferencias de rutas 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 transporte público con los siguientes parámetros:

  • Especifica las preferencias para viajar en tren y menos a pie.

  • Solicita rutas alternativas.

  • Proporciona una máscara de campo que muestra 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'

En la respuesta, se muestran 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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}