Establece un punto para que pase una ruta

Desarrolladores del Espacio Económico Europeo (EEE)

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

Usa puntos de ruta de paso para definir o ajustar una ruta específica. En lugar de dividir la ruta en paradas separadas de retiro o entrega, 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 tramo 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 tramo de ruta que conecta el origen directamente con el destino.

Para configurar un punto de referencia intermedio como punto de referencia de paso, establece la propiedad via 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, las coordenadas de latitud y longitud, o latLng, proporcionan los ajustes de ruta más precisos para los puntos de ruta de paso.

La propiedad via es más eficaz cuando creas rutas en respuesta a la acción de 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 ruta de transferencia

En el siguiente ejemplo, se muestra cómo establecer "via": true en una parada intermedia en una solicitud computeRoutes POST 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'

Cómo usar direcciones o IDs de lugar para los puntos de ruta de transferencia

Si bien recomendamos las coordenadas de latitud y longitud para el enrutamiento directo 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. Este proceso de ajuste a la ruta a veces 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 devuelve el ID de lugar coincidente en el array geocodingResults.intermediates 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 en la respuesta.

Ejemplo: Solicita IDs de lugar para los puntos de ruta de transferencia

En el siguiente ejemplo, se muestra una solicitud con tres puntos de ruta intermedios de transferencia, 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 ruta intermedios que especificaste por dirección en el índice 0 y el índice 2 de la solicitud. La API omite el punto de ruta 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"
      }
    ]
  }
}