Impostare un punto di accesso per un percorso

Sviluppatori dello Spazio economico europeo (SEE)

Per impostazione predefinita, l'API considera i waypoint intermedi come tappe lungo un percorso. Tuttavia, puoi configurare un waypoint intermedio come waypoint via di transito in cui il veicolo passa senza fermarsi.

Utilizza i waypoint passanti per modellare o modificare un percorso specifico. Anziché dividere l'itinerario in fermate di ritiro o rilascio separate, un waypoint di transito costringe il motore di routing a passare attraverso una posizione specifica durante il percorso verso la destinazione, ad esempio per seguire un segmento stradale preferito o evitare un pericolo noto.

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

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

Sebbene l'API Routes accetti indirizzi, ID luogo e coordinate di latitudine e longitudine, le coordinate di latitudine e longitudine o latLng forniscono gli aggiustamenti dell'itinerario più precisi per i waypoint pass-through.

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 posizioni accessibili.

Esempio: impostare 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 pass-through

Sebbene consigliamo le coordinate di latitudine e longitudine per un routing pass-through 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 pass-through, l'API interpola e allinea la posizione alla strada percorribile più vicina. Questo processo di snapping stradale a volte può comportare variazioni o imprecisioni dell'itinerario rispetto alle coordinate esatte.

Se specifichi un punto di controllo utilizzando una stringa di indirizzo o un plus code, l'API esegue il geocoding della posizione e restituisce l'ID luogo corrispondente nell'array geocodingResults.intermediates nella risposta.

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

Esempio: richiedere ID luogo per i waypoint pass-through

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 all'indice di richiesta 0 e all'indice 2. L'API omette il punto di riferimento intermedio all'indice 1 da geocodingResults perché l'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"
      }
    ]
  }
}