Définir un point à traverser

Développeurs de l'Espace économique européen (EEE)

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 en tant que point de cheminement de passage via que le véhicule traverse sans s'arrêter.

Utilisez des points de cheminement intermédiaires pour façonner ou ajuster un itinéraire spécifique. Plutôt que 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 emplacement spécifique sur le chemin vers 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 en tant que point de cheminement de passage, définissez la propriété via 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, les coordonnées de latitude et de longitude, ou latLng, fournissent les ajustements d'itinéraire les plus précis pour les points de cheminement de passage.

La propriété via est particulièrement 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 des 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 passage

Bien que nous recommandions d'utiliser des coordonnées de latitude et de longitude pour un routage 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 tableau geocodingResults.intermediates de la réponse.

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 : Demander des ID de lieu pour des points de passage

L'exemple suivant montre une requête avec trois points de passage intermédiaires, 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 du point de départ, de la destination et des deux points de cheminement intermédiaires que vous avez spécifiés par adresse aux index 0 et 2 de la requête. 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"
      }
    ]
  }
}