L'optimisation des points de cheminement est une fonctionnalité Routes Preferred qui étend ComputeRoutes
.
Il optimise l'ordre des points de cheminement intermédiaires dans l'itinéraire d'un voyageur, en veillant à ce qu'il emprunte l'itinéraire le plus efficace possible. ComputeRoutes
l'optimisation des points de cheminement est compatible avec les modes de transport suivants:
- En voiture
- Deux-roues motorisés
- Vélo
- À pied
Pourquoi utiliser l'optimisation des points de cheminement ?
Lorsque vous créez une application qui guide les utilisateurs à travers un certain nombre de points de cheminement en route vers une destination, il est important que le voyageur traverse les points de cheminement dans un ordre optimal. Cela garantit que le voyageur arrive à chaque point de repère dans le plus court délai possible.
Fonctionnement
Par défaut, ComputeRoutes
calcule un itinéraire via ses points de cheminement, dans l'ordre dans lequel ils ont été fournis à l'origine. Vous pouvez demander à ComputeRoutes
d'optimiser l'itinéraire en réorganisant les points de cheminement intermédiaires dans un ordre plus efficace.
Vous recevrez un itinéraire avec des points de cheminement optimisés si vous définissez
optimizeWaypointOrder
dans le corps de la requête à true
.
Remarque: Le calcul de l'optimisation des points de cheminement repose principalement sur la durée du trajet, mais la caractéristique tient aussi compte d'autres facteurs, comme la distance et le nombre de tours.
Obtenir des points de repère réorganisés
Pour obtenir un itinéraire avec des points de cheminement réorganisés, définissez le champ booléen optimizeWaypointOrder
sur true
dans le corps de votre requête à ComputeRoutes
. Incluez également le champ optimizedIntermediateWaypointIndex
dans le masque de champ. Le corps de la réponse contient l'ordre des points de cheminement optimisés dans les champs optimizedIntermediateWaypointIndex
.
Remarque : Le champ optimizedIntermediateWaypointIndex
renvoie des valeurs basées sur zéro.
Exemple de requête
L'exemple de requête suivant fournit un itinéraire près de Stanford Campus universitaire. Les points de cheminement de l'itinéraire ont été fournis de manière séquentielle dans la requête. La requête contient un point de départ et une destination, ainsi que deux plages des points de cheminement.
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"}
Exemple de réponse
Vous trouverez les index de repère intermédiaire réorganisés dans les champs optimizedIntermediateWaypointIndex
de l'objet routes dans le corps de la réponse. La valeur encodée
polyligne
est le même que dans
API Directions et
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
}
Dans cet exemple, notez que l'optimisation des points de cheminement inverse leur ordre d'origine.
Pratiques recommandées
Le traitement d'une requête avec des points de cheminement optimisés est plus long que celui d'une requête de calcul d'itinéraire simple. Par conséquent, nous vous recommandons de définir un délai avant expiration plus élevé pour l'appel de méthode en définissant une valeur d'au moins dix secondes pour l'en-tête de requête X-Server-Timeout
. Si vous continuez à recevoir des erreurs d'expiration de délai, vous pouvez ajouter
puis réessayez.
Limites d'utilisation
Pour utiliser l'optimisation des points de cheminement, vous devez respecter les conditions et limites d'utilisation suivantes :
Vous pouvez spécifier la limite d'utilisation pour les points de cheminement intermédiaires sur votre route:
- Jusqu'à 98 points de cheminement n'utilisant que les coordonnées de latitude et de longitude.
- Jusqu'à 25 points de cheminement si vous spécifiez des points de cheminement à l'aide d'ID de lieu
Tous vos points de cheminement doivent être du type stopover. Aucun de vos points de cheminement ne peut être de type via.
Vous devez ajouter
routes.optimizedIntermediateWaypointIndex
au masque de champ.Si votre requête comporte 25 points de cheminement intermédiaires ou plus, elle doit également respecter les conditions suivantes :
La distance en ligne droite cumulée entre tous les points de cheminement doit être à moins de 1 000 km. Cette distance inclut à la fois le point de départ et le vers votre destination.
Le mode de déplacement doit être "EN VOITURE".