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 itinéraires alternatifs, l'API renvoie jusqu'à trois itinéraires avec l'itinéraire par défaut. Vos clients peuvent ensuite choisir l'itinéraire qui répond le mieux à leurs besoins.

Éléments à prendre en compte lorsque vous demandez des itinéraires bis

Pour demander des itinéraires alternatifs, tenez compte des points suivants:

  • Vous ne pouvez demander des itinéraires bis que pour les 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 provoque pas d'erreur. Cependant, aucune autre route n'est renvoyée.

  • La réponse contient au maximum trois itinéraires alternatifs. Toutefois, il arrive qu'aucune autre route ne soit disponible. La réponse ne contient alors que la route par défaut.

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

Exemple de requête d'itinéraires bis

Définissez computeAlternativeRoutes sur true pour demander des itinéraires bis. L'exemple suivant montre comment demander des itinéraires alternatifs 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 pourra ensuite utiliser ces informations pour choisir l'itinéraire à emprunter. Pour en savoir plus, consultez Choisir les informations à renvoyer.

Exemple de réponse pour les itinéraires bis

Dans la réponse, utilisez la propriété de tableau routeLabels pour identifier l'itinéraire de couverture:

  • Pour le chemin d'accès par défaut, la propriété routeLabels contient DEFAULT_ROUTE.

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

Dans cet exemple, la réponse contient le chemin par défaut et deux autres chemins. 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 faciliter la sélection du trajet par l'utilisateur, ajoutez la polyligne de chaque trajet à la réponse. 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"
      ]
    }
   ]
}