Panoramica
Il servizio Distance Matrix di Google calcola gli spostamenti distanza e durata del viaggio tra più luoghi di partenza e destinazioni utilizzando una determinata modalità di viaggio.
Questo servizio non restituisce informazioni dettagliate sul percorso. Informazioni sul percorso, incluse le polilinee e le direzioni testuali, si ottiene passando il di partenza e destinazione desiderate Servizio indicazioni stradali.
Per iniziare
Prima di utilizzare il servizio Distance Matrix nell'API Maps JavaScript, assicurati innanzitutto che l'API Distance Matrix sia abilitata nel Console Google Cloud, nello stesso progetto che hai configurato per l'API Maps JavaScript.
Per visualizzare l'elenco delle API abilitate:
- Vai alla sezione console Google Cloud.
- Fai clic sul pulsante Seleziona un progetto, quindi seleziona lo stesso progetto che hai configurato. per l'API Maps JavaScript e fai clic su Apri.
- Nell'elenco delle API sulla Dashboard, cerca API Distance Matrix.
- Se vedi l'API nell'elenco, non devi eseguire altre operazioni. Se l'API non è elencata,
abilitala:
- .
- Nella parte superiore della pagina, seleziona ABILITA API per visualizzare lo stato Scheda Raccolta. In alternativa, dal menu laterale a sinistra, Seleziona Libreria.
- Cerca l'API Distance Matrix e selezionala dall'elenco dei risultati.
- Seleziona ABILITA. Al termine del processo, L'API Distance Matrix appare nell'elenco delle API nella Dashboard.
Prezzi e norme
Prezzi
Dal 16 luglio 2018 è entrato in vigore un nuovo piano tariffario con pagamento a consumo per Maps, Routes e Places. Per saperne di più sui nuovi prezzi e limiti di utilizzo del servizio JavaScript Distance Matrix, consulta Utilizzo e fatturazione per l'API Distance Matrix.
Nota: ogni query inviata al servizio Distance Matrix è limitata in base al numero di elementi consentiti, ovvero il numero di origini moltiplicate per "number of destinations" definisce il numero di elementi.
Norme
L'utilizzo del servizio Distance Matrix deve essere conforme alle norme descritte per l'API Distance Matrix.
Richieste di matrice delle distanze
L'accesso al servizio Distance Matrix è asincrono, poiché L'API di Google Maps deve effettuare una chiamata a un server esterno. Per questo motivo, devono passare un metodo di callback da eseguire una volta completata la richiesta, per elaborare i risultati.
Puoi accedere al servizio Distance Matrix all'interno del tuo codice tramite
l'oggetto costruttore google.maps.DistanceMatrixService
.
Il metodo DistanceMatrixService.getDistanceMatrix()
avvia una richiesta al servizio Distance Matrix, passando una
DistanceMatrixRequest
letterale oggetto contenente le origini,
destinazioni e modalità di viaggio, nonché un metodo di callback da eseguire
la ricezione della risposta.
var origin1 = new google.maps.LatLng(55.930385, -3.118425); var origin2 = 'Greenwich, England'; var destinationA = 'Stockholm, Sweden'; var destinationB = new google.maps.LatLng(50.087692, 14.421150); var service = new google.maps.DistanceMatrixService(); service.getDistanceMatrix( { origins: [origin1, origin2], destinations: [destinationA, destinationB], travelMode: 'DRIVING', transitOptions: TransitOptions, drivingOptions: DrivingOptions, unitSystem: UnitSystem, avoidHighways: Boolean, avoidTolls: Boolean, }, callback); function callback(response, status) { // See Parsing the Results for // the basics of a callback function. }
DistanceMatrixRequest
contiene i seguenti campi:
origins
(obbligatorio): un array contenente uno o più stringhe di indirizzi,google.maps.LatLng
oggetti o Place oggetti da cui calcolare distanza e tempo.destinations
(obbligatorio): un array contenente uno o più stringhe di indirizzi,google.maps.LatLng
oggetti o Place gli oggetti a cui calcolare la distanza e il tempo.travelMode
(facoltativo): la modalità trasporto da utilizzare per il calcolo delle indicazioni stradali. Consulta la sezione sulle modalità di viaggio.transitOptions
(facoltativo) - Opzioni che si applicano solo alle richieste in cuitravelMode
èTRANSIT
. I valori validi sono descritti nella sezione sulle opzioni di trasporto pubblico.drivingOptions
(facoltativo) specifica valori applicabili solo alle richieste in cuitravelMode
èDRIVING
. I valori validi sono descritti della sezione Opzioni di guida.unitSystem
(facoltativo): il sistema di unità da da utilizzare per visualizzare la distanza. I valori accettati sono:google.maps.UnitSystem.METRIC
(valore predefinito)google.maps.UnitSystem.IMPERIAL
avoidHighways
(facoltativo): setrue
, i percorsi tra il luogo di partenza e le destinazioni saranno in modo da evitare le autostrade, ove possibile.avoidTolls
(facoltativo): setrue
, le indicazioni stradali tra i punti saranno calcolate utilizzando che non sono a pedaggio, ove possibile.
Modalità di viaggio
Nel calcolo di tempi e distanze, puoi specificare quale modalità di trasporto utilizzare. Il seguente viaggio sono attualmente supportate:
BICYCLING
di richieste indicazioni in bicicletta tramite piste ciclabili e strade preferite (attualmente disponibile solo negli Stati Uniti e in alcune città del Canada).DRIVING
(valore predefinito) indica le indicazioni stradali standard utilizzando la rete stradale.TRANSIT
richiede indicazioni stradali tramite percorsi dei trasporti pubblici. Questa opzione può essere specificata solo se la richiesta include una chiave API. Consulta la sezione sul trasporto pubblico opzioni disponibili per le opzioni disponibili in questo tipo di richiesta.WALKING
di richieste indicazioni a piedi tramite percorsi pedonali e marciapiedi (ove disponibile).
Opzioni di trasporto pubblico
Il servizio di trasporto pubblico è attualmente "sperimentale". Durante questo , implementeremo i limiti di frequenza per prevenire l'abuso delle API. Lo faremo alla fine applicare un limite alle query totali per caricamento mappa in base al fair use l'API.
Le opzioni disponibili per una richiesta di matrice delle distanze variano a seconda della modalità di viaggio.
Per le richieste in transito, avoidHighways
e
avoidTolls
opzioni vengono ignorate. Puoi specificare
specifiche per il trasporto pubblico, tramite
TransitOptions
oggetto letterale.
Le richieste di trasporto pubblico sono sensibili al tempo. I calcoli verranno restituiti solo per in futuro.
Il valore letterale dell'oggetto TransitOptions
contiene quanto segue
campi:
{ arrivalTime: Date, departureTime: Date, modes: [transitMode1, transitMode2] routingPreference: TransitRoutePreference }
Questi campi sono descritti di seguito:
arrivalTime
(facoltativo) specifica la classe ora di arrivo come oggettoDate
. Se l'ora di arrivo è specificato, l'ora di partenza viene ignorata.departureTime
(facoltativo) specifica la classe orario di partenza come oggettoDate
. LadepartureTime
verrà ignorato searrivalTime
è specificato. Il valore predefinito è ora (ora corrente), se non è presente alcun valore specificato perdepartureTime
oarrivalTime
.modes
(facoltativo) è un array contenente uno o altri valori letterali oggettoTransitMode
. Questo campo può essere se la richiesta include una chiave API. OgniTransitMode
specifica una modalità di transito preferita. Sono consentiti i seguenti valori:BUS
indica che nell'itinerario calcolato dovrebbe preferire i viaggi in autobus.RAIL
indica che calcolo dell'itinerario dovrebbe preferire i viaggi in treno, tram, metropolitana leggera e metropolitana.SUBWAY
indica che per il percorso calcolato dovrebbe preferire i viaggi in metropolitana.TRAIN
indica che per il percorso calcolato dovrebbe preferire i viaggi in treno.TRAM
indica che percorso calcolato predilige i tram e la metropolitana leggera.
routingPreference
(facoltativo) specifica le preferenze per i percorsi con il trasporto pubblico. Utilizzando questa opzione, puoi differenziare le opzioni restituite, anziché accettare il percorso migliore predefinito scelto dall'API. Questo campo può essere specificato solo se la richiesta include un chiave API. Sono consentiti i seguenti valori:FEWER_TRANSFERS
indica che il percorso calcolato deve preferire un numero limitato di trasferimenti.LESS_WALKING
indica che il percorso calcolato dovrebbe preferire una quantità limitata di camminando.
Opzioni di guida
Utilizza l'oggetto drivingOptions
per specificare un orario di partenza per
calcolare il percorso migliore per raggiungere la tua destinazione in base alle condizioni del traffico previste. Puoi
specificare anche se desideri che il tempo stimato nel traffico sia pessimista, ottimista o
la stima migliore basata sulle condizioni storiche del traffico e sul traffico in tempo reale.
L'oggetto drivingOptions
contiene i seguenti campi:
{ departureTime: Date, trafficModel: TrafficModel }
Questi campi sono descritti di seguito:
departureTime
(obbligatorio perdrivingOptions
oggetto letterale da essere valido) specifica la orario di partenza desiderato come oggettoDate
. Il valore deve essere impostata sull'ora attuale o su un orario futuro. Non può essere nel in passato. L'API converte tutte le date in UTC per garantire una gestione coerente tra fusi orari diversi). Se includidepartureTime
nella richiesta, l'API restituisce il percorso migliore in base alle condizioni del traffico previste in quel momento e include il tempo previsto nel traffico (duration_in_traffic
) nella risposta. Se non specifichi un orario di partenza (ossia, se la richiesta non includedrivingOptions
), il percorso restituito è un percorso generalmente buono senza tenere conto delle condizioni del traffico.trafficModel
(facoltativo) specifica i presupposti per da utilizzare per calcolare il tempo nel traffico. Questa impostazione influisce sul valore nel campoduration_in_traffic
della risposta, che contiene il tempo previsto nel traffico in base alle medie storiche. Il valore predefinito èbest_guess
. Sono consentiti i seguenti valori:bestguess
(predefinito) indica che l'oggetto restituitoduration_in_traffic
dovrebbe essere la stima migliore del viaggio in base a ciò che è noto sulle condizioni storiche del traffico e traffico in tempo reale. Il traffico in tempo reale diventa più importante più si avvicinadepartureTime
è fino a ora...pessimistic
indica che l'oggetto restituitoduration_in_traffic
deve essere più lungo del viaggio effettivo tempo nella maggior parte dei giorni, anche se occasionalmente i giorni con traffico particolarmente intenso possono superare questo valore.optimistic
indica che l'oggetto restituitoduration_in_traffic
deve essere più breve del valore effettivo tempo di percorrenza quasi tutti i giorni, anche se occasionalmente i giorni in cui si registrano condizioni del traffico possono essere più veloci di questo valore.
Di seguito è riportato un esempio di DistanceMatrixRequest
per i percorsi in auto,
includendo un orario di partenza e un modello di traffico:
{ origins: [{lat: 55.93, lng: -3.118}, 'Greenwich, England'], destinations: ['Stockholm, Sweden', {lat: 50.087, lng: 14.421}], travelMode: 'DRIVING', drivingOptions: { departureTime: new Date(Date.now() + N), // for the time N milliseconds from now. trafficModel: 'optimistic' } }
Risposte della matrice delle distanze
Una chiamata riuscita al servizio Distance Matrix restituisce un
DistanceMatrixResponse
oggetto e un
Oggetto DistanceMatrixStatus
. Questi vengono passati al callback
specificata nella richiesta.
L'oggetto DistanceMatrixResponse
contiene distanza e
informazioni sulla durata per ogni coppia origine/destinazione per cui un percorso
potrebbe essere calcolato.
{ "originAddresses": [ "Greenwich, Greater London, UK", "13 Great Carleton Square, Edinburgh, City of Edinburgh EH16 4, UK" ], "destinationAddresses": [ "Stockholm County, Sweden", "Dlouhá 609/2, 110 00 Praha-Staré Město, Česká republika" ], "rows": [ { "elements": [ { "status": "OK", "duration": { "value": 70778, "text": "19 hours 40 mins" }, "distance": { "value": 1887508, "text": "1173 mi" } }, { "status": "OK", "duration": { "value": 44476, "text": "12 hours 21 mins" }, "distance": { "value": 1262780, "text": "785 mi" } } ] }, { "elements": [ { "status": "OK", "duration": { "value": 96000, "text": "1 day 3 hours" }, "distance": { "value": 2566737, "text": "1595 mi" } }, { "status": "OK", "duration": { "value": 69698, "text": "19 hours 22 mins" }, "distance": { "value": 1942009, "text": "1207 mi" } } ] } ] }
Risultati della matrice delle distanze
I campi supportati in una risposta sono spiegati di seguito.
originAddresses
è un array contenente le località nel campoorigins
della richiesta di matrice delle distanze. Gli indirizzi vengono restituiti così come sono formattati dal geocodificatore.destinationAddresses
è un array contenente località trasmesse nel campodestinations
, nel formato restituito dal geocodificatore.rows
è un array diDistanceMatrixResponseRow
di oggetti, con ogni riga corrispondente a un'origine.elements
sono figli dirows
e corrispondono a un accoppiamento dell'origine della riga con ogni destinazione. Contengono informazioni su stato, durata, distanza e tariffa (se disponibili) per ciascuno origine/destinazione.- Ogni
element
contiene i seguenti campi:status
: visualizza Codici di stato per un elenco di possibili codici di stato.duration
: il tempo necessario per percorrere questo luogo route, espressa in secondi (il campovalue
) e cometext
. Il valore testuale viene formattato in base allaunitSystem
specificato nella richiesta (o nella metrica, se non è presente) è stata specificata).duration_in_traffic
: il tempo necessario per percorri questo itinerario tenendo conto delle condizioni del traffico attuali, espresso in secondi (il campovalue
) e cometext
. Il valore testuale viene formattato in base allaunitSystem
specificato nella richiesta (o nella metrica, se non è presente) è stata specificata). Laduration_in_traffic
viene restituito solo se sono disponibili dati sul traffico, Il campomode
è impostato sudriving
edepartureTime
è incluso indistanceMatrixOptions
nella richiesta.distance
: la distanza totale del percorso, espressa in metri (value
) e cometext
. Il valore testuale sia formattato in base al valoreunitSystem
specificato in richiesta (o nella metrica, se non è stata fornita nessuna preferenza).fare
: contiene la tariffa totale (ossia il totale costi dei biglietti) su questo percorso. Questa proprietà viene restituita solo per il trasporto pubblico ed esclusivamente per i fornitori di servizi di trasporto pubblico per i quali le informazioni relative alle tariffe disponibili. Le informazioni includono:currency
: un Valuta ISO 4217 che indica la valuta in cui è espresso l'importo.value
: importo totale della tariffa, nella valuta specificata in alto.
Codici di stato
La risposta Distance Matrix include un codice di stato per la risposta come nonché lo stato di ogni elemento.
Codici di stato della risposta
I codici di stato che si applicano all'DistanceMatrixResponse
sono
passati all'oggetto DistanceMatrixStatus
e includono:
OK
- La richiesta è valida. Questo stato può essere anche se non sono state trovate route tra le origini e destinazioni. Vedi Elemento Codici di stato per le informazioni sullo stato a livello di elemento.INVALID_REQUEST
: la richiesta fornita era non valido. Questo è spesso dovuto alla mancanza di campi obbligatori. Consulta le elenco dei campi supportati riportato sopra.MAX_ELEMENTS_EXCEEDED
: il prodotto di origine e di destinazione supera il limite per query.MAX_DIMENSIONS_EXCEEDED
- La tua richiesta conteneva ulteriori informazioni oltre 25 origini o più di 25 destinazioni.OVER_QUERY_LIMIT
- La tua richiesta ha richiesto troppi elementi nel periodo di tempo consentito. La richiesta dovrebbe avrà esito positivo se riprovi dopo un periodo di tempo ragionevole.REQUEST_DENIED
: il servizio ha negato l'uso dell'elemento servizio Distance Matrix della tua pagina web.UNKNOWN_ERROR
: impossibile eseguire una richiesta di Distance Matrix a causa di un errore del server. La richiesta potrebbe avere esito positivo se provi di nuovo.
Codici di stato dell'elemento
I seguenti codici di stato si applicano a specifiche
DistanceMatrixElement
oggetti:
NOT_FOUND
: l'origine e/o la destinazione di questo impossibile geocodificare l'accoppiamento.OK
: la risposta contiene un risultato valido.ZERO_RESULTS
: non è stato trovato alcun percorso tra le origine e destinazione.
Analisi dei risultati
L'oggetto DistanceMatrixResponse
contiene uno
row
per ogni origine passata nella richiesta. Ogni riga
contiene un campo element
per ogni accoppiamento di quell'origine con
le destinazioni fornite.
function callback(response, status) { if (status == 'OK') { var origins = response.originAddresses; var destinations = response.destinationAddresses; for (var i = 0; i < origins.length; i++) { var results = response.rows[i].elements; for (var j = 0; j < results.length; j++) { var element = results[j]; var distance = element.distance.text; var duration = element.duration.text; var from = origins[i]; var to = destinations[j]; } } } }