Establece un punto para que pase una ruta

Desarrolladores del Espacio Económico Europeo (EEE)

De forma predeterminada, los puntos de ruta intermedios se usan para detenerse en las paradas y los destinos, pero también puedes especificar que un punto de ruta intermedio solo se usa para pasar por él.

Una ruta que contiene un punto de referencia de origen, un punto de referencia intermedio de paso y un punto de referencia de destino contiene solo un tramo de ruta que conecta el origen y el destino, mientras pasa por el punto de referencia intermedio (llamado via).

Configura un punto de ruta intermedio para que sea un punto de ruta de paso estableciendo la propiedad via del punto de ruta en true con Waypoint (REST) o Waypoint (gRPC).

La propiedad via es más eficaz cuando se crean rutas en respuesta a que el usuario arrastra los puntos de referencia en el mapa. De esta manera, el usuario puede ver cómo se verá la ruta final en tiempo real y asegurarse de que los puntos de referencia se coloquen en ubicaciones a las que se pueda acceder con Compute Routes.

En el siguiente ejemplo, se muestra cómo marcar un punto de ruta intermedio como punto de ruta de paso.

{
  "location": {
    "latLng": {
      "latitude":37.419734,
      "longitude":-122.0827784
    }
  },
  "via": true
}

Cómo acceder a los IDs de lugar de los puntos de referencia intermedios

Si especificas la ubicación de un origen, un destino o una parada intermedia como una cadena de dirección o como un código plus, la API intentará encontrar la ubicación más relevante que tenga un ID de lugar correspondiente. El array geocodingResults.intermediates en los resultados contiene el ID de lugar correspondiente a la ubicación de los puntos de referencia, junto con datos adicionales sobre la ubicación.

Para cada elemento del array intermediates, usa la propiedad intermediateWaypointRequestIndex para determinar qué punto de ruta intermedio de la solicitud corresponde al ID de lugar en la respuesta.

Por ejemplo:

  • Especificas tres puntos de referencia intermedios en una solicitud. Dos de estos puntos de referencia se especifican con cadenas de dirección y uno con coordenadas de latitud y longitud.

  • Incluye geocodingResults en la máscara de campo de la respuesta para especificar que se devuelva el array geocodingResults en los resultados.

curl -X POST -d '{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "24 Willie Mays Plaza, San Francisco, CA 94107"
  },
  "intermediates": [
    {
      "address": "450 Serra Mall, Stanford, CA 94305, USA"
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      }
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063"
    }
  ],
  "travelMode": "DRIVE",
}'
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY'
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults'
'https://routes.googleapis.com/directions/v2:computeRoutes'

La respuesta incluye el array geocodingResults que contiene el ID de lugar del origen, el destino y dos de los tres puntos de ruta. Estos son los puntos de referencia en los índices 0 y 2 de la solicitud. Como el punto de referencia en el índice 1 de la solicitud se especificó con coordenadas de latitud y longitud, se omite del array geocodingResults en la respuesta.

{
  "routes": [{...}],
  "geocodingResults": {
    "origin": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g"
    },
    "destination": {
     "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY"
    },
    "intermediates": [
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 0,
        "type": [
            "street_address"
        ],
        "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y"
      },
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 2,
        "type": [
          "premise"
        ],
        "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0"
      }
    ]
  }
}