Impostare un punto di accesso per un percorso

Sviluppatori dello Spazio economico europeo (SEE)

Per impostazione predefinita, l'API tratta i waypoint intermedi come fermate lungo un percorso. Tuttavia, puoi configurare un waypoint intermedio come waypoint via di transito che il veicolo attraversa senza fermarsi.

Utilizza i waypoint di transito per definire o modificare un percorso specifico. Anziché suddividere il percorso in fermate di ritiro o consegna separate, un waypoint di passaggio forza il motore di routing a passare attraverso una posizione specifica nel percorso verso la destinazione, ad esempio per seguire un segmento stradale preferito o evitare un pericolo noto.

Un percorso contenente un'origine, uno o più waypoint intermedi di transito e una destinazione contiene solo un tratto del percorso che collega l'origine direttamente alla destinazione.

Per configurare un waypoint intermedio come waypoint di transito, imposta la proprietà via del waypoint su true nella risorsa REST Waypoint o nel messaggio gRPC Waypoint.

Sebbene l'API Routes accetti indirizzi, ID luogo e coordinate di latitudine e longitudine, le coordinate di latitudine e longitudine, o latLng, forniscono le regolazioni del percorso più precise per i waypoint di transito.

La proprietà via è più efficace quando crei percorsi in risposta al trascinamento dei waypoint su una mappa. Questo approccio ti consente di vedere l'aspetto del percorso finale in tempo reale e ti aiuta a posizionare i waypoint in luoghi accessibili.

Esempio: imposta un waypoint di transito

L'esempio seguente mostra come impostare "via": true su un waypoint intermedio in una richiesta POST computeRoutes completa:

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'

Utilizzo di indirizzi o ID luogo per i waypoint di transito

Sebbene consigliamo di utilizzare le coordinate di latitudine e longitudine per un routing di passaggio preciso, puoi anche specificare waypoint intermedi utilizzando una stringa di indirizzo o un ID luogo.

Quando utilizzi un indirizzo o un ID luogo per un waypoint di transito, l'API interpola e aggancia la località alla strada navigabile più vicina. Questo processo di aggancio alla strada a volte può comportare variazioni o imprecisioni del percorso rispetto alle coordinate esatte.

Se specifichi un waypoint utilizzando una stringa di indirizzo o un Plus Code, l'API geocodifica la località e restituisce l'ID luogo corrispondente nell'array geocodingResults.intermediates nella risposta.

Per ogni elemento nell'array intermediates, utilizza la proprietà intermediateWaypointRequestIndex per determinare quale waypoint intermedio nella richiesta corrisponde all'ID luogo nella risposta.

Esempio: richiedi gli ID luogo per i waypoint di transito

L'esempio seguente mostra una richiesta con tre waypoint intermedi pass-through, ognuno dei quali specifica "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 risposta include l'array geocodingResults contenente gli ID luogo per l'origine, la destinazione e i due waypoint intermedi specificati per indirizzo nell'indice della richiesta 0 e nell'indice 2. L'API omette il waypoint intermedio all'indice 1 da geocodingResults perché lo hai specificato utilizzando le coordinate di latitudine e longitudine:

{
  "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"
      }
    ]
  }
}