Recupero di una matrice di route

Usa l'API Routes per calcolare la distanza e la durata di una route per più origini e destinazioni chiamando il metodo computeRouteMatrix (REST) o il metodo ComputeRouteMatrix per i flussi di dati (gRPC).

Dato un elenco di origini e destinazioni, il metodo calcola la distanza e la durata di un percorso che parte da ogni origine e termina a ogni destinazione.

Ottenere una matrice di percorso di trasporto pubblico

Puoi anche calcolare una matrice di route sui trasporti pubblici. Ad esempio, vedi Ottenere una matrice di percorso sui trasporti pubblici.

Limiti per le richieste

I metodi Compute Route Matrix applicano i seguenti limiti di richiesta per i waypoint che utilizzano indirizzi o placeID e per gli elementi. Gli elementi sono le route tra ogni origine e destinazione in una matrice di route, quindi il numero di elementi corrisponde al numero di origini volte al numero di destinazioni. Ad esempio, se hai 10 origini e 10 destinazioni, avrai 100 elementi:

  • Il numero di elementi non può superare 625 per le route che non sono TRANSIT.

  • Se specifichi una route TRANSIT, il numero di elementi non può essere maggiore di 100.

  • Se specifichi TRAFFIC_AWARE_OPTIMAL, il numero di elementi non può superare 100. Per maggiori informazioni su TRAFFIC_AWARE_OPTIMAL, consulta Specificare come e se includere i dati sul traffico.

  • Se specifichi le origini o le destinazioni utilizzando l'indirizzo o l'ID luogo, puoi specificarne fino a 50 in totale in questo modo.

Errori di risposta

Una funzionalità dei metodi Compute Route Matrix è che gli errori possono essere restituiti per l'intera risposta o per singoli elementi di risposta. Ad esempio, l'intera risposta contiene un errore se il formato della richiesta non è corretto (ad esempio, non ha origini).

Tuttavia, se un errore si applica a un sottoinsieme di elementi nella risposta (ad esempio, non è possibile calcolare una route per una combinazione di origine e destinazione), solo gli elementi interessati dall'errore restituiscono un codice di errore.

Risultati dei flussi gRPC

Il metodo gRPC ComputeRouteMatrix accetta un elenco di origini e destinazioni e restituisce un flusso contenente informazioni sulle route per ogni combinazione di origine e destinazione. Poiché i risultati vengono restituiti sotto forma di flusso, non è necessario attendere che vengano calcolate tutte le possibili combinazioni di route prima di poter iniziare a elaborare i risultati.

Non è garantito che vengano restituiti in nessun ordine gli elementi restituiti dal flusso. Pertanto, ogni elemento di risposta contiene un origin_index e un destination_index. Per le origini e le destinazioni specificate dalla richiesta, l'origine della route è equivalente a origins[origin_index] per un determinato elemento e la destinazione della route è equivalente a destinations[destination_index]. Questi array hanno un indice di indicizzazione pari a zero. È importante archiviare gli ordini degli elenchi di origine e destinazione.

Esempi di calcolo di una matrice di route

Utilizza il metodo computeRouteMatrix in una richiesta HTTP per calcolare una matrice di route.

Esempio di HTTP

L'esempio seguente mostra una richiesta HTTP computeRouteMatrix. In questo esempio:

  • Specifica un array di due waypoint di origine e due di destinazione. Il metodo calcola una route da ogni origine a ogni destinazione, quindi la risposta contiene quattro route.

    Nell'array, il primo elemento si trova in un indice pari a 0, il secondo è l'indice 1 e così via.

  • Includi una maschera per il campo della risposta per specificare quali campi della risposta (REST) o ComputeRoutesResponse (gRPC) restituire. In questo esempio, configura la richiesta in modo che restituisca originIndex, destinationIndex, duration, distanceMeters, status e condition per ogni route. Per maggiori informazioni, consulta Scegliere i campi da restituire.

curl -X POST -d '{
  "origins": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420761,
            "longitude": -122.081356
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.403184,
            "longitude": -122.097371
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    }
  ],
  "destinations": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420999,
            "longitude": -122.086894
          }
        }
      }
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.383047,
            "longitude": -122.044651
          }
        }
      }
    }
  ],
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \
'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'

La risposta contiene le quattro route possibili per la combinazione di tutti i waypoint di origine e di destinazione.

Identifica ogni route nella risposta utilizzando i campi di risposta originIndex e destinationIndex. Ad esempio, originIndex pari a 1 nella risposta corrisponde a una route calcolata dal waypoint nell'indice 1 dell'array origins nella richiesta.

[
    {
        "originIndex": 0,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 822,
        "duration": "160s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 2919,
        "duration": "361s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 5598,
        "duration": "402s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 0,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 7259,
        "duration": "712s",
        "condition": "ROUTE_EXISTS"
    }
]

Esempio di gRPC

Ad esempio, per le richieste gRPC, vedi gli esempi di richiesta gRPC di esempio. L'esempio Java nella pagina chiama sia Compute Routes che Compute Route Matrix.

Esempio di codice JavaScript lato client

const reqBody = {
   "origins": [
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.420761,
               "longitude": -122.081356
             }
           }
         }
       },
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.403184,
               "longitude": -122.097371
             }
           }
         }
       }
     ],
     "destinations": [
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.420999,
               "longitude": -122.086894
             }
           }
         }
       },
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.383047,
               "longitude": -122.044651
             }
           }
         }
       }
     ],
   "travelMode": "DRIVE",
   "routingPreference": "TRAFFIC_AWARE_OPTIMAL"
};
fetch("https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix", {
   method: "POST",
   headers: {
       "Content-Type": "application/json",
       "X-Goog-Api-Key": "YOUR_API_KEY",
       "X-Goog-FieldMask": "*"
   },
   body: JSON.stringify(reqBody)
}).then((response) => {
   return response.json();
}).then((data) => {
   if(data.hasOwnProperty("error")){
       console.log(data.error);
   } else {
       console.log(data);
   }
}).catch((error) => {
   console.log(error)
});