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 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 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": [ { ...