发出地理编码请求时,您可以使用字段掩码指定要在响应中返回的字段列表。字段掩码可确保您不会请求不必要的数据,从而有助于缩短响应延迟时间。
对于基本地理编码方法(对地址进行地理编码、对位置进行地理编码和地点地理编码),默认情况下会返回响应对象中的所有字段,这与搜索目的地不同,后者需要指定字段掩码。虽然基本方法不需要字段掩码,但我们强烈建议您使用字段掩码来减少响应延迟时间。
定义响应字段掩码
响应字段掩码是以逗号分隔列表的路径,不含空格,其中每个路径都指定了响应对象中的唯一字段。该路径从顶级响应字段开始,并使用以英文句点分隔的路径指向指定字段。
通过使用网址参数 $fields 或 fields,或者使用 HTTP 或 gRPC 标头 X-Goog-FieldMask,将响应字段掩码传递给请求。
字段掩码示例
下面显示了正向地理编码请求的完整响应:
{ "results": [ { "place": "//places.googleapis.com/places/ChIJF4Yf2Ry7j4AR__1AkytDyAE", "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE", "location": { "latitude": 37.422010799999995, "longitude": -122.08474779999999 }, "granularity": "ROOFTOP", "viewport": { "low": { "latitude": 37.420656719708511, "longitude": -122.08547523029148 }, "high": { "latitude": 37.4233546802915, "longitude": -122.0827772697085 } }, "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", ... }
使用响应字段的层次结构构建字段掩码,格式如下:
topLevelField[.secondLevelField][.thirdLevelField][...]
搜索目标字段掩码
调用 SearchDestinations 时,请指定所需的确切目的地属性,例如主要地点详情、入口、导航点、建筑物轮廓 (displayPolygon) 和地标:
curl -X POST -d '{"addressQuery": {"addressQuery": "1600 Amphitheatre Pkwy, Mountain View, CA"}}' \
-H 'Content-Type: application/json' \
-H 'X-Goog-FieldMask: destinations.primary.displayName,destinations.primary.displayPolygon,destinations.entrances,destinations.navigationPoints,destinations.landmarks' \
-H "X-Goog-Api-Key: API_KEY" \
https://geocode.googleapis.com/v4/geocode/destinations
核心地理编码字段掩码
例如,如需在 GeocodeAddress 响应中仅返回 placeId 字段,请使用以下字段掩码:
curl -X GET -H 'Content-Type: application/json' \ -H 'X-Goog-FieldMask: results.placeId' \ -H "X-Goog-Api-Key: API_KEY" \ https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA
现在的回答如下:
{ "results": [ { "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE" } ] }
如需返回 viewport 字段,您的字段掩码为:
-H 'X-Goog-FieldMask: results.viewport'
现在的回答如下:
{ "results": [ { "viewport": { "low": { "latitude": 37.420654569708496, "longitude": -122.08547618029148 }, "high": { "latitude": 37.423352530291496, "longitude": -122.0827782197085 } } } ] }
如需同时退回这两件商品,请执行以下操作:
-H 'X-Goog-FieldMask: results.placeId,results.viewport'
现在的回答如下:
{ "results": [ { "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE", "viewport": { "low": { "latitude": 37.420654569708496, "longitude": -122.08547618029148 }, "high": { "latitude": 37.423352530291496, "longitude": -122.0827782197085 } } } ] }
gRPC 字段掩码
对于 gRPC,请设置一个包含响应字段掩码的变量。然后,您可以将该变量传递给请求。
const ( fieldMask = "results.placeId,results.viewport" )
字段路径注意事项
在响应中仅包含您需要的字段,以便仅返回您需要的字段:
- 缩短处理时间,从而以更低的延迟时间返回结果。
- 确保稳定的延迟性能。如果您选择所有字段,或者选择顶层的所有字段,则在添加新字段并自动将其包含在响应中时,您可能会遇到性能下降的情况。
- 响应大小更小,从而提高网络吞吐量。
如需详细了解如何构建字段掩码,请参阅 field_mask.proto。