Demander des itinéraires alternatifs

Par défaut, l'API Routes renvoie la route par défaut, qui correspond généralement à l'itinéraire le plus rapide du point de départ à la destination. Lorsque vous demandez alternatives, l'API renvoie jusqu'à trois routes en plus de la route par défaut via un routage réseau. 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 itinéraire intermédiaire des points de cheminement. Demander des routes alternatives lorsque la route spécifie points de cheminement intermédiaires ne provoque pas d'erreur. Cependant, il n'existe pas d'alternative sont renvoyées.

  • La réponse contient un maximum de trois routes alternatives. Toutefois, Parfois, aucun autre itinéraire n'est disponible. La réponse ne contient donc la route par défaut.

  • En raison du traitement supplémentaire nécessaire pour calculer des alternatives des routes, la demande d'itinéraires alternatifs peut augmenter le temps de réponse l'API.

Exemple de requête d'itinéraires alternatifs

Définissez computeAlternativeRoutes sur true pour demander d'autres itinéraires. La L'exemple suivant montre comment demander d'autres itinéraires dans un 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 duration, distanceMeters, et routeLabels pour chaque itinéraire. Votre le client peut ensuite utiliser ces informations pour choisir l'itinéraire à emprunter. Pour plus informations, consultez la section 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 couverture route:

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

  • Pour tout itinéraire bis, la propriété routeLabels contient DEFAULT_ROUTE_ALTERNATE

Dans cet exemple, la réponse contient la route par défaut et deux alternatives routes. 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 méthode polyligne pour chaque itinéraire menant à 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"
      ]
    }
   ]
}