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 de paso. Para ver un ejemplo de un punto de referencia para una parada, consulta Cómo establecer una parada a lo largo de una ruta. Para ver un ejemplo de un punto de referencia que se puede transferir, consulta Cómo configurar un punto para que una ruta lo transfiera.
Usa la propiedad del array intermediates
del método computeRoutes (REST) o el método ComputeRoutes (gRPC) para definir hasta 25 puntos de ruta intermedios.
Para cada punto de referencia intermedio en la solicitud, el objeto de ruta (REST) o el objeto de ruta (gRPC) en la respuesta agrega una entrada al array legs
para proporcionar los detalles de ese tramo del recorrido.
Cada tramo de una ruta está representado por un objeto RouteLeg (REST) o RouteLeg (gRPC).
Controla qué campos RouteLeg
se mostrarán con la máscara de campo de respuesta.
Ejemplo: Cómo establecer un punto de referencia intermedio
En el siguiente ejemplo, se usa la propiedad array intermediates
para agregar un solo 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 objetoRouteLeg
.
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 de la etapa 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": [ { ...