Elige la información que quieras devolver
Cuando llamas a un método para procesar una ruta o una matriz de rutas, debes especificar qué información deseas especificando los campos que deseas que se muestren en la respuesta. No hay una lista predeterminada de los campos mostrados. Si omites esta lista, los métodos muestran un error.
Para especificar la lista de campos, crea una máscara de campo de respuesta. Luego, debes pasar la máscara de campo de respuesta a cualquiera de los métodos con el parámetro de URL $fields
o fields
, o con el encabezado HTTP o gRPC X-Goog-FieldMask
.
El enmascaramiento de campo es una práctica de diseño recomendada para garantizar que no solicites datos innecesarios, lo que ayuda a evitar tiempos de procesamiento y cargos facturados innecesarios.
Para obtener más información sobre los parámetros de URL, consulta Parámetros del sistema.
Define una máscara de campo de respuesta
La máscara del campo de respuesta es una lista de rutas separadas por comas, en la que cada ruta especifica un campo único en el mensaje de respuesta. La ruta comienza en el mensaje de respuesta de nivel superior y usa una ruta de acceso separada por puntos al campo especificado.
Crea una ruta de campo de la siguiente manera:
topLevelField[.secondLevelField][.thirdLevelField][...]
- Máscara de campo de ruta de procesamiento
- Calcular máscaras de campo de matriz de ruta
- REST: Especifica los campos del cuerpo de la respuesta que se mostrarán.
- gRPC: Especifica los campos del objeto RouteMatrixElement en la respuesta que se mostrará.
Para obtener más información sobre cómo construir máscaras de campo, consulta el field_mask.proto.
Determina qué máscaras de campo usar
A continuación, te mostramos cómo puedes determinar qué máscaras de campo deseas usar:
- Solicita todos los campos con una máscara de campo de
*
. - Observa la jerarquía de los campos en la respuesta y determina qué campos quieres.
- Compila tu máscara de campo con la jerarquía de campos.
Por ejemplo, para esta respuesta parcial de una ruta de transporte público, usa lo siguiente:
"routes": [ { "legs": [ { "distanceMeters": 12886, } ... ]}]
Si deseas mostrar solo el campo distanceMeters
, la máscara de campo será la siguiente:
routes.legs.distanceMeters
Otro ejemplo: Para mostrar todo lo que está debajo de legs
en la respuesta, la máscara de campo es la siguiente:
routes.legs
Especifica una ruta de campo
Esta sección contiene ejemplos sobre cómo especificar una ruta de campo como parte de una máscara de campo de respuesta.
Llamada de REST a computeRoutes
En el primer ejemplo, usas una llamada de REST al método computeRoutes
para calcular una ruta. En este ejemplo, en el encabezado, especificas máscaras de campo para mostrar los campos Route.distanceMeters
y Route.duration
en la respuesta. Recuerda
agregar el prefijo routes
al nombre del campo.
-H X-Goog-FieldMask: routes.distanceMeters,routes.duration
Llamada de REST a computeRouteMatrix
En el método computeRouteMatrix
de REST que se usa para calcular una matriz de ruta, en el encabezado, especifica que se muestre originIndex
, destinationIndex
y duration
para cada combinación de origen y destino:
-H X-Goog-FieldMask: originIndex,destinationIndex,duration
Llamada a gRPC
Para gRPC, configura una variable que contenga la máscara de campo de respuesta. Luego, puedes pasar esa variable a la solicitud.
const ( fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline" )
Consideraciones de las rutas de campo
Incluye solo los campos que necesites en la respuesta. Muestra solo los campos que necesitas:
- Reduce los tiempos de procesamiento, por lo que tus resultados se devuelven con una latencia más baja.
- Garantiza un rendimiento de latencia estable si la API agrega más campos de respuesta en el futuro, y esos campos nuevos requieren tiempo de procesamiento adicional. Si seleccionas todos los campos, o si lo haces en el nivel superior, es posible que experimentes una degradación del rendimiento cuando todos los campos nuevos se incluyan automáticamente en tu respuesta.
- Genera un tamaño de respuesta más pequeño, lo que se traduce en una mayor capacidad de procesamiento de la red.
- Se asegura de no solicitar datos innecesarios, lo que ayuda a evitar tiempos de procesamiento y cargos facturados innecesarios.
Solicita un token de ruta
Si deseas solicitar que la API de Routes muestre tokens de ruta para las rutas generadas, sigue los requisitos para mostrar un token de ruta y, luego, usa la máscara de campo routes.route_token
a fin de solicitar el token:
- Establece
travel_mode
enDRIVING
. - Establece
routing_preference
enTRAFFIC_AWARE
oTRAFFIC_AWARE_OPTIMAL
. - Verifica que ninguno de los puntos de referencia de tu ruta sea
via
. - Especifica la máscara de campo del token de ruta:
-H X-Goog-FieldMask: routes.route_token
Puedes usar la ruta planificada en el SDK de Navigation. Para obtener más detalles, consulta Planifica una ruta (Android) o Planifica una ruta (iOS).
Ejemplo de token de ruta
A continuación, se muestra un ejemplo de un cuerpo de solicitud cURL para una ruta de origen único y destino único, con máscaras de campo para solicitar un token de ruta, junto con la duración, la distancia y la polilínea de la ruta:
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-Api-Key: YOUR_API_KEY' \ -H X-Goog-FieldMask: routes.route_token,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline 'https://routes.googleapis.com/directions/v2:computeRoutes'
Para obtener más detalles, consulta la referencia de la API de Compute Routes.