Par défaut, les points de chemin intermédiaires sont utilisés pour les arrêts de prise en charge et de dépose, mais vous pouvez également spécifier qu'un point de chemin intermédiaire est destiné uniquement au passage.
Un itinéraire qui contient un point de départ, un point de cheminement intermédiaire de transit et un point de cheminement de destination ne contient qu'une seule section d'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 repère intermédiaire comme point de repère de transit, définissez la propriété via
du point de repère sur true
à l'aide de Waypoint (REST) ou Waypoint (gRPC).
La propriété via
est plus efficace lorsque vous créez des itinéraires en réponse au déplacement des waypoints par l'utilisateur sur la carte. Cela permet à l'utilisateur de voir à quoi pourrait ressembler l'itinéraire final en temps réel et de s'assurer que les waypoints sont placés dans des lieux accessibles à Compute Routes.
L'exemple suivant montre comment marquer un point de chemin intermédiaire comme point de chemin de passage.
{ "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'une origine, d'une destination ou d'un point de cheminement intermédiaire sous la forme d'une chaîne d'adresse ou d'un plus code, l'API tente de trouver l'emplacement le plus pertinent qui possède un ID de lieu correspondant. Le tableau geocodingResults.intermediates
des résultats contient l'identifiant de lieu correspondant à l'emplacement des points de repère, 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 chemin intermédiaire de la requête correspond à l'ID de lieu dans la réponse.
Exemple :
Vous spécifiez trois points de chemin intermédiaires dans une requête. Deux de ces points de repère 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 spécifier de renvoyer le tableaugeocodingResults
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 du lieu d'origine, de destination et de deux des trois points de repère. Il s'agit des waypoints 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" } ] } }