Par défaut, l'API traite les points de cheminement intermédiaires comme des arrêts sur un itinéraire.
Toutefois, vous pouvez configurer un point de cheminement intermédiaire comme point de cheminement via de passage, par lequel le véhicule passe sans s'arrêter.
Utilisez des points de cheminement de passage pour définir ou ajuster un itinéraire spécifique. Au lieu de diviser l'itinéraire en arrêts de prise en charge ou de dépose distincts, un point de cheminement de passage force le moteur de routage à passer par un lieu spécifique sur le chemin de la destination, par exemple pour suivre un segment de route préféré ou éviter un danger connu.
Un itinéraire contenant un point de départ, un ou plusieurs points de cheminement intermédiaires de passage et une destination ne contient qu'une seule section qui relie directement le point de départ à la destination.
Pour configurer un point de cheminement intermédiaire comme point de cheminement de passage, définissez la
via propriété du point de cheminement sur true dans la ressource REST
Waypoint ou le message gRPC
Waypoint.
Bien que l'API Routes accepte les adresses, les ID de lieu et les coordonnées de latitude et de longitude
coordinates, les coordonnées de latitude et de longitude, ou latLng, offrent les
ajustements d'itinéraire les plus précis pour les points de cheminement de passage.
La propriété via est plus efficace lorsque vous créez des itinéraires en réponse au déplacement de points de cheminement sur une carte. Cette approche vous permet de voir l'itinéraire final en temps réel et vous aide à placer les points de cheminement dans des lieux accessibles.
Exemple : Définir un point de cheminement de passage
L'exemple suivant montre comment définir "via": true sur un point de cheminement intermédiaire
dans une requête POST computeRoutes complète :
curl -X POST -d '{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, "intermediates": [ { "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0807784 } }, "via": true } ], "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' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
Utiliser des adresses ou des ID de lieu pour les points de cheminement de passage
Bien que nous recommandions d'utiliser des coordonnées de latitude et de longitude pour un routage de passage précis, vous pouvez également spécifier des points de cheminement intermédiaires à l'aide d'une chaîne d'adresse ou d'un ID de lieu.
Lorsque vous utilisez une adresse ou un ID de lieu pour un point de cheminement de passage, l'API interpole et aligne l'emplacement sur la route navigable la plus proche. Ce processus d'alignement sur la route peut parfois entraîner des variations ou des inexactitudes d'itinéraire par rapport aux coordonnées exactes.
Si vous spécifiez un point de cheminement à l'aide d'une chaîne d'adresse ou d'un Plus Code, l'API
géocode l'emplacement et renvoie l'ID de lieu correspondant dans le
geocodingResults.intermediates
tableau de la réponse.
Pour chaque élément du tableau intermediates, utilisez la propriété intermediateWaypointRequestIndex afin de déterminer quel point de cheminement intermédiaire de la requête correspond à l'ID de lieu dans la réponse.
Exemple : Demander des ID de lieu pour les points de cheminement de passage
L'exemple suivant montre une requête avec trois points de cheminement intermédiaires de passage, chacun spécifiant "via": true :
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", "via": true }, { "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0807784 } }, "via": true }, { "address": "1836 El Camino Real, Redwood City, CA 94063", "via": true } ], "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 les ID de lieu pour le point de départ, la destination et les deux points de cheminement intermédiaires que vous avez spécifiés par adresse aux index de requête 0 et 2. L'API omet le point de cheminement intermédiaire à l'index 1 de geocodingResults, car vous l'avez spécifié à l'aide de coordonnées de latitude et de longitude :
{ "routes": [ { "distanceMeters": 54200, "duration": "2400s", "legs": [ { "distanceMeters": 54200, "duration": "2400s", "startLocation": { "latLng": { "latitude": 37.4220, "longitude": -122.0841 } }, "endLocation": { "latLng": { "latitude": 37.7786, "longitude": -122.3893 } } } ] } ], "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" } ] } }