Demander des itinéraires alternatifs

Par défaut, l'API Routes renvoie l'itinéraire par défaut, qui est généralement l'itinéraire le plus rapide entre le point de départ et la destination. Lorsque vous demandez des routes alternatives, l'API renvoie jusqu'à trois routes en plus de la route par défaut. Vos clients peuvent alors choisir l'itinéraire qui répond le mieux à leurs besoins.

Éléments à prendre en considération lors de la demande d'itinéraires alternatifs

Pour demander d'autres itinéraires, tenez compte des points suivants:

  • Vous ne pouvez demander d'itinéraires alternatifs que pour des itinéraires sans points de cheminement intermédiaires. Demander des itinéraires alternatifs lorsque l'itinéraire spécifie des points de cheminement intermédiaires ne génère pas d'erreur. Cependant, aucune autre route n'est renvoyée.

  • La réponse contient un maximum de trois routes alternatives. Cependant, il arrive qu'aucune autre route ne soit disponible. La réponse ne contient donc que la route par défaut.

  • En raison du traitement supplémentaire requis pour calculer des routes alternatives, demander des routes alternatives peut augmenter le temps de réponse de l'API.

Exemple de requête d'itinéraires alternatifs

Définissez computeAlternativeRoutes sur true pour demander d'autres itinéraires. L'exemple suivant montre comment demander d'autres routes dans une requête de méthode 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'

Dans cet exemple, vous spécifiez un masque de champ afin que la réponse ne contienne que les propriétés duration, distanceMeters, et routeLabels pour chaque itinéraire. Votre client peut ensuite utiliser ces informations pour choisir l'itinéraire à emprunter. Pour en savoir plus, consultez Choisir les informations à renvoyer.

Exemple de réponse d'itinéraires alternatifs

Dans la réponse, utilisez la propriété de tableau routeLabels pour identifier la route de couverture:

  • Pour la route par défaut, la propriété routeLabels contient DEFAULT_ROUTE.

  • Pour tous les itinéraires bis, la propriété routeLabels contient DEFAULT_ROUTE_ALTERNATE.

Dans cet exemple, la réponse contient la route par défaut et deux routes alternatives. Notez que les valeurs des propriétés duration et distanceMeters sont différentes pour chaque itinéraire:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}

Inclure des polylignes dans la réponse

Pour permettre à l'utilisateur de sélectionner plus facilement l'itinéraire, ajoutez à la réponse la polyligne de chaque itinéraire. Vous pouvez ensuite afficher chaque polyligne sur une carte.

Pour ajouter la polyligne, incluez routes.polyline dans le masque de champ:

-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'

La réponse contient ensuite la polyligne pour chaque itinéraire:

{
  "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"
      ]
    }
   ]
}