Optimisez vos points de cheminement

L'optimisation des points de cheminement est une fonctionnalité Routes Preferred qui étend ComputeRoutes Il optimise l'ordre des points de cheminement intermédiaires sur l'itinéraire d'un voyageur, en s'assurant qu'ils empruntent 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ées
  • 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. Ainsi, le voyageur arrive à tous les points de cheminement le plus court.

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 bénéficier de ComputeRoutes pour l'optimisation 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 le champ optimizeWaypointOrder dans le corps de la requête sur 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 cheminement réorganisés

Pour obtenir un itinéraire avec des points de cheminement réorganisés, définissez le champ booléen optimizeWaypointOrder à true dans le corps de la requête destinée à ComputeRoutes Incluez également le champ optimizedIntermediateWaypointIndex. dans le masque de champ. Le corps de la réponse contient l'ordre optimisé des points de cheminement les champs optimizedIntermediateWaypointIndex.

Remarque: Le champ optimizedIntermediateWaypointIndex renvoie des valeurs de base zéro valeurs.

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 sont fournis de manière séquentielle dans 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 points de cheminement intermédiaires réorganisés dans la section Champs optimizedIntermediateWaypointIndex dans 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 valeur d'origine. commande.

Le traitement d'une requête avec des points de cheminement optimisés prend plus de temps qu'un simple routage requête. Par conséquent, nous vous recommandons de définir un délai d'inactivité plus élevé pour l'appel de méthode en définissant une valeur d'au moins dix pour l'en-tête de requête X-Server-Timeout secondes. 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 ces limites d'utilisation et conditions:

  • 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 des 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 peut être du 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 respectent les conditions suivantes:

    • La distance cumulée en ligne droite entre tous les points de cheminement doit être inférieure à 1 000 km. Cette distance comprend à la fois le point de départ et la destination.

    • Le mode de transport doit être drive.