选择要返回的信息
当您调用计算路线或计算路线矩阵的方法时,必须通过指定要在响应中返回的字段来指定所需信息。没有返回字段的默认列表。如果省略此列表,这些方法会返回错误。
您可以通过创建响应字段掩码来指定字段列表。然后,您可以使用网址参数 $fields
或 fields
,或者使用 HTTP 或 gRPC 标头 X-Goog-FieldMask
将响应字段掩码传递给任一方法。
字段遮盖是一种很好的设计做法,可确保您不会请求不必要的数据,这有助于避免不必要的处理时间和已结算费用。
如需详细了解网址参数,请参阅系统参数。
定义响应字段掩码
响应字段掩码是以英文逗号分隔的路径列表,其中每个路径指定了响应消息中的唯一字段。该路径从顶级响应消息开始,并使用以英文句点分隔的路径,指向指定字段。
按如下所示构造字段路径:
topLevelField[.secondLevelField][.thirdLevelField][...]
- 计算路由字段掩码
- 计算路由矩阵字段掩码
- REST:指定要返回的响应正文的字段。
- gRPC:指定要返回的响应中 RouteMatrixElement 对象的字段。
如需详细了解如何构建字段掩码,请参阅 field_mask.proto。
确定要使用的字段掩码
下面介绍了如何确定要使用的字段掩码:
- 使用字段掩码
*
请求所有字段。 - 查看响应中字段的层次结构并确定所需的字段。
- 使用字段层次结构构建字段掩码。
例如,对于某个公交路线的部分响应:
"routes": [ { "legs": [ { "distanceMeters": 12886, } ... ]}]
如果您只想返回 distanceMeters
字段,则字段掩码为:
routes.legs.distanceMeters
另一个示例:如需返回响应中 legs
下的所有内容,您的字段掩码为:
routes.legs
指定字段路径
本部分包含有关如何将字段路径指定为响应字段掩码一部分的示例。
对 computeRoutes
的 REST 调用
在第一个示例中,您使用对 computeRoutes
方法的 REST 调用来计算路线。在此示例中,您可以在标头中指定字段掩码,以在响应中返回 Route.distanceMeters
和 Route.duration
字段。请务必为字段名称添加 routes
前缀。
-H X-Goog-FieldMask: routes.distanceMeters,routes.duration
对 computeRouteMatrix
的 REST 调用
对于用于计算路线矩阵的 REST computeRouteMatrix
方法,请在标头中指定针对出发地和目的地的每个组合返回 originIndex
、destinationIndex
和 duration
:
-H X-Goog-FieldMask: originIndex,destinationIndex,duration
gRPC 调用
对于 gRPC,请设置包含响应字段掩码的变量。然后,您可以将该变量传递给请求。
const ( fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline" )
字段路径注意事项
在响应中仅添加所需的字段。仅返回所需的字段:
- 缩短处理时间,从而以更低的延迟返回结果。
- 如果 API 在将来添加更多响应字段,并且这些新字段需要额外的计算时间,则可以确保稳定的延迟时间性能。如果您选择所有字段,或选择顶层的所有字段,则所有新字段都自动包含在响应中时,您可能会遇到性能下降的情况。
- 减小响应大小,从而提高网络吞吐量。
- 确保您不会请求不必要的数据,这有助于避免不必要的处理时间和已结算费用。
请求路由令牌
如需请求 Routes API 为生成的路由返回路由令牌,请遵循返回路由令牌的要求,然后使用 routes.route_token
字段掩码请求令牌:
- 将
travel_mode
设置为DRIVING
。 - 将
routing_preference
设置为TRAFFIC_AWARE
或TRAFFIC_AWARE_OPTIMAL
。 - 请检查并确保您的所有路线航点均不是
via
航点。 - 指定路由令牌字段掩码:
-H X-Goog-FieldMask: routes.route_token
您可以在 Navigation SDK 中使用规划的路线。如需了解详情,请参阅规划路线 (Android) 或规划路线 (iOS)。
路由令牌示例
以下是单个出发地、单目的地路线的 c网址 请求正文示例,该正文使用字段掩码请求路线令牌以及路线时长、距离和路线多段线:
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'
如需了解详情,请参阅 Compute Routes API 参考文档。