De forma predeterminada, la API de Routes muestra la ruta predeterminada, que suele ser la ruta más rápida del origen al destino. Cuando solicitas rutas alternativas, la API muestra hasta tres rutas junto con la ruta predeterminada. De esta manera, tus clientes pueden elegir la ruta que mejor se adapte a sus requisitos.
Consideraciones para solicitar rutas alternativas
Para solicitar rutas alternativas, ten en cuenta las siguientes consideraciones:
Solo puedes solicitar rutas alternativas para rutas sin puntos de referencia intermedios. Solicitar rutas alternativas cuando la ruta especifica puntos intermedios no genera un error. Sin embargo, no se muestran rutas alternativas.
La respuesta contiene un máximo de tres rutas alternativas. Sin embargo, a veces no hay rutas alternativas disponibles, por lo que la respuesta solo contiene la ruta predeterminada.
Debido al procesamiento adicional necesario para calcular rutas alternativas, solicitar rutas alternativas podría aumentar el tiempo de respuesta de la API.
Ejemplo de solicitud de rutas alternativas
Establece computeAlternativeRoutes
en true
para solicitar rutas alternativas. En el siguiente ejemplo, se muestra cómo solicitar rutas alternativas en una solicitud del método computeRoutes (REST).
curl -X POST -d '{ "origin":{ "location":{ "latLng":{ "latitude":42.340173523716736, "longitude":-71.05997968330408 } } }, "destination":{ "location":{ "latLng":{ "latitude":42.075698891472804, "longitude": -72.59806562080408 } } }, "travelMode": "DRIVE", "routingPreference":"TRAFFIC_AWARE", "computeAlternativeRoutes": true }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
En este ejemplo, especificas una máscara de campo para que la respuesta contenga solo las propiedades duration
, distanceMeters,
y routeLabels
para cada ruta. Luego, el cliente puede usar esa información para elegir qué ruta tomar. Para obtener más información, consulta Elige qué información mostrar.
Ejemplo de respuesta de rutas alternativas
En la respuesta, usa la propiedad array routeLabels
para identificar la ruta de alcance:
Para la ruta predeterminada, la propiedad
routeLabels
contieneDEFAULT_ROUTE
.Para cualquier ruta alternativa, la propiedad
routeLabels
contieneDEFAULT_ROUTE_ALTERNATE
.
En este ejemplo, la respuesta contiene la ruta predeterminada y dos rutas alternativas. Ten en cuenta que los valores de las propiedades duration
y distanceMeters
son diferentes para cada ruta:
{ "routes": [ { "distanceMeters": 150322, "duration": "5309s", "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 157614, "duration": "6879s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] }, { "distanceMeters": 189311, "duration": "7376s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] } ] }
Cómo incluir polilíneas en la respuesta
Para que el usuario pueda seleccionar la ruta con mayor facilidad, agrega el polilínea de cada ruta a la respuesta. Luego, puedes mostrar cada polilínea en un mapa.
Para agregar la polilínea, incluye routes.polyline
en la máscara de campo:
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'
Luego, la respuesta contiene la polilínea de cada ruta:
{ "routes": [ { "distanceMeters": 150322, "duration": "5309s", "polyline": { "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 157614, "duration": "6879s", "polyline": { "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] }, { "distanceMeters": 189311, "duration": "7376s", "polyline": { "encodedPolyline": "FVLL|Af@HPAV…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] } ] }