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 a quella predefinita. I clienti potranno quindi scegliere il percorso più adatto alle loro esigenze.

Considerazioni sulla richiesta di percorsi alternativi

Per richiedere route alternative, tieni presente le seguenti considerazioni:

  • Puoi richiedere route alternative solo per le route senza waypoint intermedi. La richiesta di route alternative quando la route specifica tappe intermedie non provoca 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 di 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 del campo in modo che la risposta contenga solo le proprietà duration, distanceMeters, e routeLabels per ogni route. Il cliente potrà quindi utilizzare queste informazioni per scegliere il percorso da intraprendere. Per ulteriori informazioni, vedi 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 il percorso predefinito, la proprietà routeLabels contiene DEFAULT_ROUTE.

  • Per tutti i percorsi alternativi, la proprietà routeLabels contiene DEFAULT_ROUTE_ALTERNATE.

In questo esempio, la risposta contiene la route predefinita e due route alternative. Tieni presente 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 le polilinee nella risposta

Per consentire all'utente di selezionare più facilmente la route, 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 ciascuna 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"
      ]
    }
   ]
}