Obtén una ruta de transporte público

Una ruta de transporte público proporciona instrucciones de navegación a través de la línea de transporte público de almacenamiento disponibles en la región. Las opciones de transporte público pueden incluir autobuses, metros, y trenes, entre otros. Por lo general, una ruta de transporte público también incluye instrucciones para caminar hacia, desde y entre las estaciones de transporte público. Debido a que una ruta de transporte público normalmente requiere que viajes con más de un medio de transporte, cómo solicitar la ruta y algunas partes de la respuesta son diferentes.

Diferencias entre las rutas de transporte público y otras rutas

Las rutas de transporte público, que solicitas al configurar el modo de transporte de TRANSIT, difieren desde rutas con diferentes opciones de TravelMode. No puedes solicitar todos 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 en todos los tipos de viajes. Por lo tanto, cada instrucción de navegación es un paso. Transporte público la respuesta de ruta es muy similar a las rutas con otros medios de transporte, con algunas diferencias:

Diferencias en las solicitudes Diferencias de respuesta
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 contenga el resumen de los pasos para ese medio de transporte, en `stepsOverview` (para solicitar estos metadatos, usa el “routes.legs.stepsOverview”).
No se puede especificar cómo y si incluir datos de tráfico.
No se pueden especificar los componentes 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 rutas de transporte público.

Cómo obtener una ruta de transporte público

  1. Configura tu origen y 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 desees. Consulta Solicita los campos de rutas de transporte público que necesitas.

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

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

Solicita los campos de rutas de transporte público que necesitas mediante máscaras de campo. La siguiente tabla contiene algunas respuestas sugeridas para una y la máscara de campo que se usará para solicitarlos.

Cómo solicitar esta información Usar 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 para cada tramo routes.legs.steps.startLocation
Ubicación de finalización para cada tramo routes.legs.steps.endLocation
Enrutar la polilínea para cada paso routes.legs.steps.polyline
Tipo de transporte público utilizado 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 tarifas de transporte público en 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 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 modo de transporte público travelMode: "TRANSIT" Obligatorio. Obtén más información.
Cómo configurar una hora de llegada o salida "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"

O

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
Opcional. Puedes especificarar_time_time o departure_time. Si no se especifica ningún momento, el departure_time se establece, de forma predeterminada, tiempo de ejecución actual (now). Puedes configurar las opciones de horas de salida solo dentro del siguiente período, con la tarifa tiempo de ejecución (now) como referencia:
  • hasta 7 días antes del now
  • hasta 100 días después del now inclusive
La hora se expresa como una marca de tiempo en RFC3339 UTC "Zulú" de un conjunto de datos tengan un formato común. Más información
Incluir rutas alternativas "computeAlternativeRoutes": true Opcional. Se establece en 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 devuelvan aún usan otros medios de transporte, incluso solo usan otros medios de transporte, según la eficiencia de la ruta y la disponibilidad de los servicios viajes.

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. Especifica las preferencias de rutas en transporte público. Más información

Ejemplo: Obtén una ruta en el transporte público

En el siguiente ejemplo, se obtiene una ruta de 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 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 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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}