Trovare percorsi alternativi

Sviluppatori dello Spazio economico europeo (SEE)

Per impostazione predefinita, l'API Routes restituisce il percorso predefinito, che in genere è il percorso più veloce dall'origine alla destinazione. Quando richiedi itinerari alternativi, l'API restituisce fino a tre itinerari insieme all'itinerario predefinito. I tuoi clienti possono quindi scegliere l'itinerario più adatto alle loro esigenze.

Considerazioni quando si richiedono itinerari alternativi

Per richiedere itinerari alternativi, tieni presente le seguenti considerazioni:

  • La risposta contiene un massimo di tre itinerari alternativi. Tuttavia, a volte non sono disponibili itinerari alternativi, quindi la risposta contiene solo l'itinerario predefinito.

  • A causa dell'elaborazione aggiuntiva necessaria per calcolare gli itinerari alternativi, la richiesta di itinerari alternativi potrebbe aumentare il tempo di risposta dell'API.

Esempio di richiesta di itinerari alternativi

Imposta computeAlternativeRoutes su true per richiedere itinerari alternativi. L' esempio seguente mostra come richiedere itinerari alternativi in una computeRoutes (REST).

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude":42.340173523716736,
        "longitude":-71.05997968330408
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude":42.075698891472804,
        "longitude": -72.59806562080408
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference":"TRAFFIC_AWARE",
  "computeAlternativeRoutes": true
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

In questo esempio, specifichi una maschera di campo in modo che la risposta contenga solo le duration, distanceMeters, e routeLabels proprietà per ogni itinerario. Il cliente può quindi utilizzare queste informazioni per scegliere l'itinerario da seguire. Per ulteriori informazioni, vedi Scegli quali informazioni restituire.

Esempio di risposta di itinerari alternativi

Nella risposta, utilizza la proprietà dell'array routeLabels per identificare l'itinerario di raggiungimento:

  • Per l'itinerario predefinito, la proprietà routeLabels contiene DEFAULT_ROUTE.

  • Per gli itinerari alternativi, la proprietà routeLabels contiene DEFAULT_ROUTE_ALTERNATE.

In questo esempio, la risposta contiene l'itinerario predefinito e due itinerari alternativi. Tieni presente che i valori delle proprietà duration e distanceMeters sono diversi per ogni itinerario:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}

Includi le polilinee nella risposta

Per semplificare la selezione dell'itinerario da parte dell'utente, aggiungi la polilinea per ogni itinerario alla risposta. Puoi quindi visualizzare ogni polilinea su una mappa.

Per aggiungere la polilinea, includi routes.polyline nella maschera di campo:

-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'

La risposta contiene quindi la polilinea per ogni itinerario:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "polyline": {
        "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "polyline": {
        "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "polyline": {
        "encodedPolyline": "FVLL|Af@HPAV…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}