Trovare percorsi alternativi

Sviluppatori dello Spazio economico europeo (SEE)

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

Considerazioni per la richiesta di percorsi alternativi

Per richiedere percorsi alternativi, tieni presente quanto segue:

  • La risposta contiene un massimo di tre percorsi alternativi. Tuttavia, a volte non sono disponibili percorsi alternativi, quindi 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 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 percorso. Il tuo cliente può quindi utilizzare queste informazioni per scegliere il percorso da seguire. Per saperne di più, consulta Scegli le informazioni da restituire.

Esempio di risposta con percorsi alternativi

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

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

  • Per tutti gli itinerari 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 polilinee nella risposta

Per consentire all'utente di selezionare più facilmente il percorso, aggiungi la polyline per ogni percorso 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 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"
      ]
    }
   ]
}