Scegli quali informazioni restituire
Quando chiami un metodo per calcolare una route o una matrice di route, devi specificare quali informazioni vuoi specificare i campi da restituire nella risposta. Non esiste un elenco predefinito di campi restituiti. Se ometti questo elenco, i metodi restituiscono un errore.
Per specificare l'elenco dei campi, crea una maschera per il campo di risposta. Puoi quindi passare la maschera del campo di risposta a uno dei due metodi utilizzando il parametro URL $fields
o fields
oppure l'intestazione HTTP o gRPC X-Goog-FieldMask
.
Il mascheramento dei campi è una buona pratica di progettazione per garantire di non richiedere dati non necessari, il che contribuisce a evitare tempi di elaborazione e addebiti fatturati.
Per ulteriori informazioni sui parametri URL, consulta Parametri di sistema.
Definisci una maschera per il campo di risposta
La maschera del campo della risposta è un elenco di percorsi separati da virgole, in cui ogni percorso specifica un campo univoco nel messaggio di risposta. Il percorso parte dal messaggio di risposta di primo livello e utilizza un percorso separato da punti al campo specificato.
Per creare il percorso di un campo:
topLevelField[.secondLevelField][.thirdLevelField][...]
- Maschera del campo della route Compute
- Mascherine dei campi della matrice delle route Compute
- REST: specifica i campi del Corpo della risposta da restituire.
- gRPC: specifica i campi dell'oggetto RouteMatrixElement nella risposta da restituire.
Per ulteriori informazioni su come creare maschere di campo, consulta field_mask.proto.
Determinare quali maschere di campo utilizzare
Per determinare quali maschere di campo utilizzare:
- Richiedi tutti i campi utilizzando una maschera di campo
*
. - Osserva la gerarchia dei campi nella risposta e determina quali campi vuoi.
- Crea la maschera dei campi utilizzando la gerarchia dei campi.
Ad esempio, per questa risposta parziale da una route di trasporto pubblico:
"routes": [ { "legs": [ { "distanceMeters": 12886, } ... ]}]
Per restituire solo il campo distanceMeters
, la maschera del campo sarà:
routes.legs.distanceMeters
Un altro esempio: per restituire tutto ciò che si trova in legs
nella risposta, la maschera del campo è:
routes.legs
Specifica il percorso di un campo
Questa sezione contiene esempi su come specificare il percorso di un campo come parte di una maschera del campo di risposta.
Chiamata REST a computeRoutes
Nel primo esempio, utilizzi una chiamata REST al metodo computeRoutes
per calcolare una route. In questo esempio, nell'intestazione, specifichi le maschere dei campi per restituire i campi Route.distanceMeters
e Route.duration
nella risposta. Ricordati di anteporre routes
al nome del campo.
-H X-Goog-FieldMask: routes.distanceMeters,routes.duration
Chiamata REST a computeRouteMatrix
Per il metodo REST computeRouteMatrix
utilizzato per calcolare una matrice di route, nell'intestazione, specifica di restituire
originIndex
, destinationIndex
e duration
per ogni combinazione di
origine e destinazione:
-H X-Goog-FieldMask: originIndex,destinationIndex,duration
Chiamata gRPC
Per gRPC, imposta una variabile contenente la maschera del campo di risposta. Puoi quindi passare la variabile alla richiesta.
const ( fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline" )
Considerazioni sui percorsi dei campi
Includi nella risposta solo i campi obbligatori. Restituire solo i campi che ti servono:
- Riduce i tempi di elaborazione, in modo che i risultati vengano restituiti con una latenza inferiore.
- Garantisce prestazioni di latenza stabili se l'API aggiunge altri campi di risposta in futuro e questi nuovi campi richiedono più tempo di calcolo. Se selezioni tutti i campi o tutti i campi al livello superiore, potresti riscontrare un peggioramento delle prestazioni quando tutti i nuovi campi vengono inclusi automaticamente nella risposta.
- Genera risposte di dimensioni inferiori, che si traduce in una velocità effettiva di rete più elevata.
- Garantisce di non richiedere dati superflui, per evitare tempi di elaborazione e addebiti fatturati inutili.
Richiedere un token di route
Per richiedere che l'API Routes restituisca i token di route per le route generate, segui i requisiti per la restituzione di un token di route, quindi utilizza la maschera del campo routes.route_token
per richiedere il token:
- Imposta
travel_mode
suDRIVING
. - Imposta
routing_preference
suTRAFFIC_AWARE
oTRAFFIC_AWARE_OPTIMAL
. - Controlla che nessuno dei tappe del tuo percorso sia
via
tappe. - Specifica la maschera per il campo del token di route:
-H X-Goog-FieldMask: routes.route_token
Puoi utilizzare il percorso pianificato nell'SDK di navigazione. Per maggiori dettagli, consulta Pianificare un percorso (Android) o Pianificare un percorso (iOS).
Esempio di token di route
Ecco un esempio di corpo della richiesta per una singola origine, una route a destinazione singola, e l'uso delle maschere di campo per richiedere un token di route, insieme a durata, distanza e polilinea del percorso:
terminal curl -X POST -d {"origin":{ "location": { "latLng":{ "latitude": -37.8167, "longitude": 144.9619 } } }, "destination":{ "location": { "latLng":{ "latitude":-37.8155, "longitude": 144.9663 } } }, "routingPreference":"TRAFFIC_AWARE", "travelMode":"DRIVE" } -H X-Goog-FieldMask: routes.route_token,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline 'https://routes.googleapis.com/directions/v2:computeRoutes'
Per maggiori dettagli, consulta il riferimento per l'API Compute Routes.