Establece un punto para que pase una ruta

De forma predeterminada, los puntos de referencia intermedios se usan para parar en puntos de partida y de destino, pero también puedes especificar que un punto de referencia intermedio solo debe pasar.

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 segmento de ruta que conecta el origen y el destino, a la vez que pasa por el punto de referencia intermedio (llamado via).

Configura un punto de referencia intermedio para que sea de paso. Para ello, configura la propiedad via del punto de referencia en true mediante Waypoint (REST) o Waypoint (gRPC).

La propiedad via es más eficaz cuando se crean rutas cuando el usuario arrastra los puntos de referencia en el mapa. Esto le permite al usuario ver cómo se vería la ruta final en tiempo real y ayuda a garantizar que los puntos de referencia se coloquen en ubicaciones a las que las rutas de procesamiento pueden acceder.

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

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

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

Si especificas la ubicación de un origen, un destino o un punto de referencia intermedio como una cadena de dirección o un Plus Code, la API intenta encontrar la ubicación más relevante que tenga un ID de lugar correspondiente. El array geocodingResults.intermediates de 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 referencia intermedio de la solicitud corresponde al ID de lugar de la respuesta.

Por ejemplo:

  • Debes especificar tres puntos de referencia intermedios en una solicitud. Dos de estos puntos de referencia se especifican con cadenas de direcciones y uno con coordenadas de latitud y longitud.

  • Debes incluir geocodingResults en la máscara de campo de respuesta para especificar que se muestre 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 referencia. Estos son los puntos de referencia en los índices 0 y 2 de la solicitud. Debido a que el punto de referencia en el índice 1 de la solicitud se especificó mediante coordenadas de latitud y longitud, se omite del arreglo 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"
      }
    ]
  }
}