Richiedi percorsi alternativi

Per impostazione predefinita, l'API Routes restituisce la route default, che in genere è il percorso più veloce dal luogo di partenza alla destinazione. Quando richiedi alternative, l'API restituisce fino a tre route predefinite percorso. 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 percorsi alternativi solo per percorsi senza intermedia tappe. Richiesta di route alternative quando la route specifica le tappe intermedie non causano un errore. Tuttavia, nessuna alternativa vengono restituite.

  • 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 route, la richiesta di route alternative può aumentare il tempo di risposta l'API.

Esempio di richiesta di route alternative

Imposta computeAlternativeRoutes su true per richiedere percorsi alternativi. La l'esempio seguente mostra come richiedere route alternative in un computeRoutes metodo (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 duration, distanceMeters, e routeLabels per ogni percorso. Il tuo Il cliente potrà quindi utilizzare queste informazioni per scegliere il percorso da intraprendere. Per maggiori informazioni informazioni, vedi Scegliere le informazioni da restituire.

Esempio di risposta di route alternative

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

  • 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 la route predefinita e due alternative route. Nota che i valori delle proprietà duration e distanceMeters sono diverse per ogni percorso:

{
  "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 il percorso, aggiungi l'elemento polilinea per ogni route alla risposta. Puoi quindi visualizzare ciascuna 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"
      ]
    }
   ]
}