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 comme point de cheminement 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. Au lieu de diviser l'itinéraire en arrêts de prise en charge ou de dépose distincts, un point de cheminement de transit oblige 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 en tant que point de cheminement de transit, 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 identifiants de lieu et les coordonnées de latitude et de longitude, les coordonnées de latitude et de longitude, ou latLng, permettent d'ajuster les itinéraires de la manière la plus précise pour les points de cheminement intermédiaires.

La propriété via est plus efficace lorsque vous créez des itinéraires en réponse au déplacement de points de repère sur une carte. Cette approche vous permet de voir à quoi ressemble l'itinéraire final en temps réel et vous aide à placer des points de repère dans des lieux accessibles.

Exemple : Définir un point 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 identifiants de lieu pour les points de passage intermédiaires

Bien que nous recommandions les 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 intermédiaire, l'API interpole et aligne l'emplacement sur la route praticable la plus proche. Ce processus d'alignement sur les routes 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 les points de cheminement intermédiaires

L'exemple suivant montre une requête avec trois points de chemin intermédiaires de type "pass-through", 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 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"
      }
    ]
  }
}