Cómo obtener rutas alternativas

Desarrolladores del Espacio Económico Europeo (EEE)

De forma predeterminada, la API de Routes devuelve la ruta predeterminada, que suele ser la más rápida desde el origen hasta el destino. Cuando solicitas rutas alternativas, la API devuelve hasta tres rutas junto con la ruta predeterminada. Luego, tus clientes podrán 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 las rutas sin puntos de referencia intermedios. Solicitar rutas alternativas cuando la ruta especifica puntos de referencia intermedios no genera un error. Sin embargo, no se devuelven 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 que se requiere para calcular rutas alternativas, solicitarlas puede 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, tu cliente puede usar esa información para elegir qué ruta tomar. Para obtener más información, consulta Cómo elegir la información que se devolverá.

Ejemplo de respuesta de rutas alternativas

En la respuesta, usa la propiedad de array routeLabels para identificar la ruta de alcance:

  • En la ruta predeterminada, la propiedad routeLabels contiene DEFAULT_ROUTE.

  • Para cualquier ruta alternativa, la propiedad routeLabels contiene DEFAULT_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"
      ]
    }
   ]
}

Incluye polilíneas en la respuesta

Para que al usuario le resulte más fácil seleccionar la ruta, agrega la 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"
      ]
    }
   ]
}