Trovare percorsi alternativi

Per impostazione predefinita, l'API Routes restituisce il percorso predefinito, che in genere è il percorso più rapido dall'origine alla destinazione. Quando richiedi percorsi alternativi, l'API restituisce fino a tre percorsi, oltre a quello predefinito. I clienti possono quindi scegliere un percorso che soddisfi al meglio le loro esigenze.

Considerazioni per la richiesta di percorsi alternativi

Per richiedere percorsi alternativi, tieni presente le seguenti considerazioni:

  • Puoi richiedere percorsi alternativi solo per i percorsi senza waypoint intermedi. La richiesta di percorsi alternativi quando il percorso specifica punti di passaggio intermedi non causa un errore. Tuttavia, non vengono restituiti percorsi alternativi.

  • La risposta contiene un massimo di tre percorsi alternativi. Tuttavia, talvolta non sono disponibili percorsi alternativi, pertanto la risposta contiene solo il percorso predefinito.

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

Esempio di richiesta di percorsi alternativi

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

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 percorso. Il cliente potrà quindi utilizzare queste informazioni per scegliere il percorso da seguire. Per ulteriori informazioni, consulta Scegliere le informazioni da restituire.

Esempio di risposta relativa ai percorsi alternativi

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

  • Per il percorso predefinito, la proprietà routeLabels contiene DEFAULT_ROUTE.

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

In questo esempio, la risposta contiene il percorso predefinito e due percorsi alternativi. 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"
      ]
    }
   ]
}

Includi le polilinee nella risposta

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

Per aggiungere il 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 percorso:

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