Establece un punto para que pase una ruta

Desarrolladores del Espacio Económico Europeo (EEE)

De forma predeterminada, la API trata los puntos de referencia intermedios como paradas a lo largo de una ruta. Sin embargo, puedes configurar un punto de referencia intermedio como un punto de referencia via de paso que el vehículo atraviesa sin detenerse.

Usa puntos de referencia de paso para dar forma o ajustar una ruta específica. En lugar de dividir la ruta en paradas de partida o llegada separadas, un punto de referencia de paso obliga al motor de enrutamiento a pasar por una ubicación específica en el camino hacia el destino, por ejemplo, para seguir un segmento de ruta preferido o evitar un peligro conocido.

Una ruta que contiene un origen, uno o más puntos de referencia intermedios de paso y un destino contiene solo un segmento de ruta que conecta el origen directamente con el destino.

Para configurar un punto de referencia intermedio como un punto de referencia de paso, establece la via propiedad del punto de referencia en true en el recurso Waypoint de REST o en el mensaje Waypoint de gRPC.

Si bien la API de Routes acepta direcciones, IDs de lugar y coordenadas de latitud y longitud coordenadas, las coordenadas de latitud y longitud, o latLng, proporcionan los ajustes de ruta más precisos para los puntos de referencia de paso.

La propiedad via es más eficaz cuando creas rutas en respuesta a arrastrar puntos de referencia en un mapa. Este enfoque te permite ver cómo se ve la ruta final en tiempo real y te ayuda a colocar puntos de referencia en ubicaciones accesibles.

Ejemplo: Establece un punto de referencia de paso

En el siguiente ejemplo, se muestra cómo establecer "via": true en un punto de referencia intermedio en una solicitud POST computeRoutes completa:

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    }
  ],
  "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' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Usa direcciones o IDs de lugar para puntos de referencia de paso

Si bien recomendamos las coordenadas de latitud y longitud para el enrutamiento de paso preciso, también puedes especificar puntos de referencia intermedios con una cadena de dirección o un ID de lugar.

Cuando usas una dirección o un ID de lugar para un punto de referencia de paso, la API interpola y ajusta la ubicación a la ruta navegable más cercana. A veces, este proceso de ajuste de ruta puede generar variaciones o imprecisiones en la ruta en comparación con las coordenadas exactas.

Si especificas un punto de referencia con una cadena de dirección o un código Plus, la API geocodifica la ubicación y muestra el ID de lugar coincidente en el geocodingResults.intermediates array de la respuesta.

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.

Ejemplo: Solicita IDs de lugar para puntos de referencia de paso

En el siguiente ejemplo, se muestra una solicitud con tres puntos de referencia intermedios de paso , cada uno de los cuales especifica "via": true:

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",
      "via": true
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063",
      "via": true
    }
  ],
  "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 los IDs de lugar del origen, el destino y los dos puntos de referencia intermedios que especificaste por dirección en el índice de solicitud 0 y el índice 2. La API omite el punto de referencia intermedio en el índice 1 de geocodingResults porque lo especificaste con coordenadas de latitud y longitud:

{
  "routes": [
    {
      "distanceMeters": 54200,
      "duration": "2400s",
      "legs": [
        {
          "distanceMeters": 54200,
          "duration": "2400s",
          "startLocation": {
            "latLng": {
              "latitude": 37.4220,
              "longitude": -122.0841
            }
          },
          "endLocation": {
            "latLng": {
              "latitude": 37.7786,
              "longitude": -122.3893
            }
          }
        }
      ]
    }
  ],
  "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"
      }
    ]
  }
}