Establecer puntos de referencia intermedios

Los puntos de referencia intermedios son ubicaciones entre el origen y el destino por las que deseas que pase la ruta. Un punto de referencia intermedio puede ser una parada o puedes especificarlo como una ubicación para pasar. Para ver un ejemplo de punto de referencia para una parada, consulta Cómo establecer una parada en una ruta. Para ver un ejemplo de un punto de referencia para pasar, consulta Configura el punto de una ruta para pasar.

Usa la propiedad de arreglo intermediates del método computeRoutes (REST) o el método ComputeRoutes (gRPC) para definir hasta un máximo de 25 puntos de referencia intermedios.

Para cada punto de referencia intermedio en la solicitud, el objeto de ruta (REST) o el objeto de ruta (gRPC) de la respuesta agrega una entrada al array legs para proporcionar los detalles de ese segmento del viaje.

Cada segmento de una ruta está representado por un objeto RouteLeg (REST) o RouteLeg (gRPC). Controla qué campos RouteLeg mostrar mediante la máscara de campo de respuesta.

Ejemplo: establece un punto de referencia intermedio

En el siguiente ejemplo, se usa la propiedad de arreglo intermediates para agregar un punto de referencia intermedio único al cuerpo de la solicitud POST de una ruta.

En este ejemplo, se usa una máscara de campo de respuesta en el encabezado X-Goog-FieldMask que especifica que se deben mostrar los siguientes campos en la respuesta:

  • routes.duration
  • routes.distanceMeters
  • routes.legs correspondiente a todo el objeto RouteLeg.
curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    },
    "sideOfRoad": true
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      }
    }
  ],
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE",
  "departureTime": "2022-10-15T15:01:23.045123456Z",
  "computeAlternativeRoutes": false,
  "routeModifiers": {
    "avoidTolls": false,
    "avoidHighways": false,
    "avoidFerries": false
  },
  "languageCode": "en-US",
  "units": "IMPERIAL"
}'
-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'

La respuesta de esta llamada contiene el array legs. Cada paso del segmento se representa mediante un objeto RouteLegStep (REST) o RouteLegStep (gRPC).

{
  "routes": [
    {
      "legs": [
        # First leg
        {
            "distanceMeters": 207,
            "duration": "89s",
            "staticDuration": "89s",
            "polyline": {
                "encodedPolyline": "ipkcFjgchVd@@@cF]@@oCK?"
            },
            "startLocation": {
                "latLng": {
                    "latitude": 37.4197318,
                    "longitude": -122.0826233
                }
            },
            "endLocation": {
                "latLng": {
                    "latitude": 37.419734,
                    "longitude": -122.08077919999998
                }
            },
            "steps": [            {
              "distanceMeters": 21,
              "staticDuration": "6s",
              "polyline": {
                "encodedPolyline": "ipkcFjgchVd@@"
              },
              "startLocation": {
                "latLng": {
                  "latitude": 37.4197318,
                  "longitude": -122.0826233
                }
              },
              "endLocation": {
                "latLng": {
                  "latitude": 37.41954,
                  "longitude": -122.08262750000002
                }
              }
            },
            ...
        },
        # Second leg
        {
            "distanceMeters": 598,
            "duration": "159s",
            "staticDuration": "159s",
            "polyline": {
                "encodedPolyline": "ipkcFz{bhVh@??{@xPBP?J}E{E?"
            },
            "startLocation": {
                "latLng": {
                    "latitude": 37.419734,
                    "longitude": -122.08077919999998
                }
            },
            "endLocation": {
                "latLng": {
                    "latitude": 37.417616599999995,
                    "longitude": -122.07938820000001
                }
            },
            "steps": [
                {
                  ...