La optimización de puntos de referencia es una función de Rutas preferida que extiende
ComputeRoutes
Optimiza el orden de los puntos de referencia intermedios en la ruta de un viajero
y asegurarse de que viajen
por la ruta más eficiente posible. El ComputeRoutes
La implementación de la optimización de puntos de referencia admite los siguientes medios de transporte:
- En automóvil
- Motor de dos ruedas
- Ciclismo
- A pie
¿Por qué usar la optimización de puntos de referencia?
Cuando compilas una app que guía a los usuarios a través de una serie de puntos de referencia en el camino hacia un destino, es importante que el viajero recorra los puntos de referencia en la y el orden óptimo. Esto asegura que el viajero llegue en cada punto de referencia del durante el menor tiempo posible.
Cómo funciona
De forma predeterminada, ComputeRoutes
calcula una ruta a través de sus puntos de referencia, en el orden en que aparecen.
en la que se proporcionaron originalmente. Puedes obtener ComputeRoutes
para realizar optimizaciones.
la ruta reorganizando los puntos de referencia intermedios en un orden más eficiente.
Recibirás una ruta con puntos de referencia optimizados si configuras la
Campo optimizeWaypointOrder
en el cuerpo de la solicitud a true
.
Nota: El cálculo de la optimización de puntos de referencia se basa principalmente en la duración del viaje, pero el atributo también considera otros factores, como la distancia y el número de giros.
Cómo obtener puntos de referencia reordenados
Para obtener una ruta con puntos de referencia ordenados, establece el campo booleano
optimizeWaypointOrder
a true
en el cuerpo de tu solicitud a
ComputeRoutes
Además, incluye el campo optimizedIntermediateWaypointIndex
en la máscara de campo. El cuerpo de la respuesta contiene el orden de puntos de referencia optimizados en
los campos optimizedIntermediateWaypointIndex
Nota: El campo optimizedIntermediateWaypointIndex
muestra un valor basado en cero
de salida.
Ejemplo de solicitud
La siguiente solicitud de ejemplo proporciona una ruta cerca de Stanford Campus universitario. Los puntos de referencia de la ruta se proporcionaron secuencialmente en el para cada solicitud. La solicitud contiene un origen y un destino, con dos valores y puntos de referencia.
POST /v1alpha:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Server-Timeout: 10
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
{
"origin":{
"location":{
"latLng":{
"latitude": 37.418956,
"longitude": -122.160815
}
}
},
"intermediates": [
{
"location":{
"latLng":{
"latitude": 37.4176423,
"longitude":-122.1102246
}
}
},
{
"location":{
"latLng":{
"latitude": 37.407689,
"longitude": -122.1360597
}
}
}
],
"destination":{
"location":{
"latLng":{
"latitude": 37.4032137,
"longitude": -122.0349119
}
}
},
"travelMode": "DRIVE",
"optimizeWaypointOrder": true,
"routingPreference": "TRAFFIC_AWARE"}
Ejemplo de respuesta
Puedes encontrar los índices de puntos de referencia intermedios reordenados en la
Los campos optimizedIntermediateWaypointIndex
dentro del objeto de rutas del
cuerpo de respuesta. La codificación
polilínea
es lo mismo que en
API de Directions y
ComputeRoutes.
routes {
distance_meters: 17647
duration {
seconds: 1866
}
polyline {
encoded_polyline: "wkkcFvorhVU{@Ec@C}CG}@Mm@[}@i@y@[[g@_@Tk@BSjCgGfF|D\\Pv@Lj@@XaCTeC\\aCTs@`ByD`@k@h@e@x@Yh@GtADhBF|@G`AWpAs@lAsAdA{A`BmDr@cBmUqQoS}OyGmFiBsAgEwD}CaCU_@Og@@e@Hy@nGkO~@sBr@cBlDqIlByEp@}AjIfGnBbBHLLd@^p@~ErDfNrKrA~@DIhEeBTQ~AqDlE{KjBgE|FnEh@aAi@`A}FoE~AmD`A}BcAm@mHwFwD}CkLwIsDqCgF_EG[GKnCsDrA_BrC_CnCoBpEkD`EyClCsBcBeBIAkGkH]k@eJmKQKsAuA_@g@wCoDGQmEmFmIqROKaDuHvBkBxAgANCRH^f@v@dBHDD?`AUiBqEhBpEaATMCQYm@wAY]SIOByAfAwBjB_ByDaAwBiCeIA[c@aBqEuNOm@IQbA{c@p@aZFmCTuBLg@Tc@BUAKxOeV~Vy_@nBoDv@_BvAcDzA_EdG{RdC{HtIsY|B{Hx@mDbAuFdBsMbKsv@TaBf@}AdF{Sn@_DJq@Lo@aE`@]GUQmAmAQk@@g@RK`Ce@d@UDEPc@f@cCrAyGJs@X{AbIem@bA{JD_AIaAMg@o@{A_Ad@y@NaCLCsCK_FGI"
}
optimizedIntermediateWaypointIndex: 1
optimizedIntermediateWaypointIndex: 0
}
En este ejemplo, observa que la optimización de los puntos de referencia revierte su original en el orden personalizado.
Prácticas recomendadas
El procesamiento de una solicitud con puntos de referencia optimizados demora más que un simple enrutamiento
para cada solicitud. Por lo tanto, te recomendamos que establezcas un tiempo de espera mayor en la llamada de método
estableciendo un valor para el encabezado de la solicitud X-Server-Timeout
en al menos diez
segundos. Si sigues recibiendo errores de tiempo de espera, puedes agregar otro segundo.
y, luego, vuelve a intentarlo.
Limitaciones de uso
Para usar la optimización de puntos de referencia, debes seguir estas limitaciones de uso y condiciones:
Puedes especificar hasta el límite de uso para puntos de referencia intermedios en tu ruta:
- Hasta 98 puntos de referencia usando solo coordenadas de latitud y longitud.
- Hasta 25 puntos de referencia si especificas algún punto de referencia con los ID de lugar.
Todos tus puntos de referencia deben ser del tipo parada. Ninguno de tus puntos de referencia Puede ser del tipo a través de.
Debes agregar
routes.optimizedIntermediateWaypointIndex
al campo. máscara.Si tu solicitud tiene 25 o más puntos de referencia intermedios, también debe cumplen con las siguientes condiciones:
La distancia en línea recta acumulada entre todos los puntos de referencia debe ser inferior a 1,000 km. Esta distancia incluye el origen y el destino.
El medio de transporte debe ser Drive.