Establece 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. Si deseas ver un ejemplo de un punto de referencia para una parada, consulta Cómo establecer una parada en una ruta. Para ver un ejemplo de un punto de referencia de paso, consulta Establece el punto de una ruta de paso.

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

Para cada punto de referencia intermedio de 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 único punto de referencia intermedio 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 que corresponde 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 con 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": [
                {
                  ...