Richiedi percorsi alternativi

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

Considerazioni per la richiesta di route alternative

Per richiedere percorsi alternativi, tieni presente quanto segue:

  • Puoi richiedere solo percorsi alternativi per route senza waypoint intermedi. Richiedere route alternative quando la route specifica pointpoint intermedi non causa un errore. Tuttavia, non vengono restituite route alternative.

  • La risposta contiene un massimo di tre route alternative. Tuttavia, a volte non sono disponibili route alternative, quindi la risposta contiene solo la route predefinita.

  • A causa dell'elaborazione aggiuntiva necessaria per calcolare le route alternative, la richiesta di route alternative potrebbe aumentare il tempo di risposta dell'API.

Esempio di richiesta di route alternative

Imposta computeAlternativeRoutes su true per richiedere percorsi alternativi. L'esempio seguente mostra come richiedere route alternative in una richiesta del metodo 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 proprietà duration, distanceMeters, e routeLabels per ogni route. Il cliente può quindi utilizzare queste informazioni per scegliere il percorso da seguire. Per ulteriori informazioni, consulta la sezione Scegliere le informazioni da restituire.

Esempio di risposta di route alternative

Nella risposta, utilizza la proprietà array routeLabels per identificare il percorso di copertura:

  • Per la route predefinita, la proprietà routeLabels contiene DEFAULT_ROUTE.

  • Per eventuali route alternative, la proprietà routeLabels contiene DEFAULT_ROUTE_ALTERNATE.

In questo esempio, la risposta contiene la route predefinita e due route alternative. Nota che i valori delle proprietà duration e distanceMeters sono diversi per ogni route:

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

Includere polilinee nella risposta

Per consentire all'utente di selezionare più facilmente il percorso, aggiungi alla risposta la polilinea per ogni route. Puoi quindi visualizzare ogni polilinea su una mappa.

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

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

La risposta contiene quindi la polilinea per ogni route:

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