Définir un point à traverser

Par défaut, les points de cheminement intermédiaires sont utilisés pour les arrêts pour les montées et les descentes, mais vous pouvez également spécifier qu'un point de cheminement intermédiaire est destiné uniquement à passer.

Un itinéraire contenant un point de cheminement de départ, un point de cheminement intermédiaire de type passthrough et un point de cheminement de destination ne contient qu'une seule section de l'itinéraire qui relie le point de départ et la destination, tout en passant par le point de cheminement intermédiaire (appelé via).

Pour configurer un point de cheminement intermédiaire en tant que point de cheminement de type passthrough, définissez la propriété via du point de cheminement sur true à l'aide de Waypoint (REST) ou Waypoint (gRPC).

La propriété via est la plus efficace lorsque vous créez des itinéraires lorsque l'utilisateur fait glisser les points de cheminement sur la carte. Cela permet à l'utilisateur de voir à quoi peut ressembler l'itinéraire final en temps réel et permet de s'assurer que les points de cheminement sont placés dans des emplacements accessibles par Compute Routes.

L'exemple suivant montre comment marquer un point de cheminement intermédiaire comme point de cheminement de type passthrough.

{
  "location": {
    "latLng": {
      "latitude":37.419734,
      "longitude":-122.0827784
    }
  },
  "via": true
}

Accéder aux ID de lieu pour les points de cheminement intermédiaires

Si vous spécifiez l'emplacement d'un point de départ, d'une destination ou d'un point de cheminement intermédiaire sous forme de chaîne d'adresse ou de Plus code, l'API tente de trouver le lieu le plus pertinent avec un ID de lieu correspondant. Le tableau geocodingResults.intermediates dans les résultats contient l'ID de lieu correspondant à l'emplacement des points de cheminement, ainsi que des données supplémentaires sur l'emplacement.

Pour chaque élément du tableau intermediates, utilisez la propriété intermediateWaypointRequestIndex pour déterminer quel point de cheminement intermédiaire de la requête correspond à l'ID de lieu dans la réponse.

Exemple :

  • Vous spécifiez trois points de cheminement intermédiaires dans une requête. Deux de ces points de cheminement sont spécifiés par des chaînes d'adresse, et un par des coordonnées de latitude/longitude.

  • Vous incluez geocodingResults dans le masque de champ de réponse pour indiquer que le tableau geocodingResults doit être renvoyé dans les résultats.

curl -X POST -d '{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "24 Willie Mays Plaza, San Francisco, CA 94107"
  },
  "intermediates": [
    {
      "address": "450 Serra Mall, Stanford, CA 94305, USA"
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      }
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063"
    }
  ],
  "travelMode": "DRIVE",
}'
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY'
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults'
'https://routes.googleapis.com/directions/v2:computeRoutes'

La réponse inclut le tableau geocodingResults contenant l'ID de lieu pour le point de départ, la destination et pour deux des trois points de cheminement. Il s'agit des points de cheminement aux index 0 et 2 de la requête. Étant donné que le point de cheminement à l'index 1 de la requête a été spécifié à l'aide de coordonnées de latitude/longitude, il est omis du tableau geocodingResults dans la réponse.

{
  "routes": [{...}],
  "geocodingResults": {
    "origin": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g"
    },
    "destination": {
     "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY"
    },
    "intermediates": [
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 0,
        "type": [
            "street_address"
        ],
        "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y"
      },
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 2,
        "type": [
          "premise"
        ],
        "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0"
      }
    ]
  }
}