Optimiza el orden de las paradas en tu ruta

De forma predeterminada, el método Compute Routes de la API de Routes calcula una ruta a través de varias paradas, llamadas puntos de referencia de parada, en el orden en que se proporcionan.

Puedes hacer que la API de Routes optimice la ruta proporcionada reorganizando las paradas en un orden más eficiente. La optimización de puntos de referencia se optimiza para el tiempo de viaje, pero también considera otros factores, como la distancia y la cantidad de giros, cuando se decide cuál es la ruta más eficiente.

Para optimizar puntos de referencia

  1. Asegúrate de que ninguno de los puntos de referencia de la ruta tenga via configurado como true, por ejemplo, {"address": "Clare,SA", "via": true}. Para obtener más información sobre los puntos de referencia intermedios, consulta Especifica puntos de referencia intermedios.

  2. Asegúrate de que routing_preference no esté configurado como TRAFFIC_AWARE_OPTIMAL.

  3. Establece optimize_waypoint_order en true. Por ejemplo:

    "optimizeWaypointOrder": "true",
    
  4. Especifica el campo routes.optimizedIntermediateWaypointIndex en la máscara de campo:

    REST

    -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex

    RPC

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

Comprender cómo se optimiza el orden de los puntos de referencia

A continuación, se muestra cómo la API de Routes optimiza el orden de los puntos de referencia en una ruta:

  1. Indexa automáticamente los puntos de referencia según el orden en el que los proporciones en la solicitud, comenzando por 0.

  2. Optimiza el orden de los puntos de referencia con los números de índice que se asignan a los puntos de referencia en la solicitud.

  3. Muestra el orden de los puntos de referencia optimizados en el objeto routes, en el campo waypoint_order, en routes.optimizedIntermediateWaypointIndex.

Ejemplo

Esta solicitud solicita la optimización de una ruta desde Adelaida, Australia del Sur, a cada una de las principales regiones vinícolas de Australia del Sur y, luego, regresa a Adelaida.

curl -X POST -H 'content-type: application/json' -d ' {
  "origin": {
    "address": "Adelaide,SA"
  },
  "destination": {
    "address": "Adelaide,SA"
  },
  "intermediates": [
    {"address": "Barossa+Valley,SA"},
    {"address": "Clare,SA"},
    {"address": "Coonawarra,SA"},
    {"address": "McLaren+Vale,SA"}
  ],
  "travelMode": "DRIVE",
  "optimizeWaypointOrder": "true"
  }' \
-H 'Content-Type: application/json' \
-H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes,geocodingResults.intermediates.intermediateWaypointRequestIndex' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

La API de Routes indexa los puntos de referencia intermedios proporcionados en la solicitud, a partir de 0. Por ejemplo:

0    {"address": "Barossa+Valley,SA"},
1    {"address": "Clare,SA"},
2    {"address": "Coonawarrav,SA"},
3    {"address": "McLaren+Vale,SA"}

Con los números de índice de los cuatro puntos de referencia proporcionados en la solicitud, el servicio muestra el orden optimizado:

"optimizedIntermediateWaypointIndex": [
                3,
                2,
                0,
                1
            ]