Establece un punto para que pase una ruta

De forma predeterminada, los puntos de referencia intermedios se utilizan para las paradas para puntos de partida y puntos de referencia intermedios, pero también puedes especificar que un punto de referencia intermedio pasar.

Una ruta que contiene un punto de referencia de origen, un punto de referencia intermedio de referencia, y un punto de referencia de destino contiene solo una etapa de la ruta que conecta el origen y el destino, mientras pasa por el intermedio (denominado punto de referencia via).

Configura un punto de referencia intermedio para que sea de paso Configurando la propiedad via del punto de referencia en true con cualquiera de los siguientes métodos: Punto de referencia (REST) o Punto de referencia (gRPC).

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

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

{
  "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 string de dirección o como un Plus Code, la API intenta encontrar el la ubicación más relevante que tenga un ID de lugar correspondiente. El geocodingResults.intermediates la matriz de los resultados contiene el id. de sitio correspondiente a la ubicación de la y datos adicionales sobre la ubicación.

Para cada elemento del array intermediates, usa la propiedad intermediateWaypointRequestIndex para determinar qué intermediario El punto de referencia en 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 Los puntos de referencia se especifican mediante cadenas de dirección y uno por latitud y longitud. coordenadas.

  • Debes incluir geocodingResults en la máscara de campo de respuesta para especificar lo siguiente: Devuelve 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 de el origen, el destino y dos de los tres puntos de referencia. Estos son los y puntos de referencia en los índices 0 y 2 de la solicitud. Como el punto de referencia en el índice 1 de que la solicitud se especificó usando coordenadas de latitud y longitud, es omitidos 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"
      }
    ]
  }
}