选择要返回的字段

调用地点详情(新) 附近搜索(新) 文本搜索(新)方法时,您必须指定要在响应中返回哪些字段。没有返回字段的默认列表。如果您省略此列表,这些方法会返回错误。

如需查看支持的数据字段及其对应的 SKU 的完整列表,请参阅地点数据字段(新)。如需了解特定于每个 API 的字段,请参阅以下内容:

您可以通过创建响应字段掩码来指定字段列表。然后,您可以使用参数 $fieldsfields,或使用 HTTP 或 gRPC 标头 X-Goog-FieldMask 将响应字段掩码传递给任一方法。

字段遮盖是一种良好的设计做法,可确保您不会请求不必要的数据,这有助于避免产生不必要的处理时间和结算费用。

定义响应字段掩码

响应字段掩码是一个以英文逗号分隔的路径列表,其中每个路径都指定响应正文中的一个唯一字段。该路径从顶级响应消息开始,并使用以英文句点分隔的路径指向指定字段。

构建字段路径,如下所示:

topLevelField[.secondLevelField][.thirdLevelField][...]

您可以使用字段掩码 * 请求所有字段。

如需详细了解如何构建字段掩码,请参阅 field_mask.proto

确定要使用的字段掩码

您可以通过以下方式确定要使用的字段掩码:

  1. 使用字段掩码 * 请求所有字段。
  2. 查看响应中字段的层次结构,并确定您需要哪些字段。
  3. 使用字段层次结构构建字段遮罩。

为附近搜索(新版)和文本搜索(新版)定义响应字段掩码

“附近搜索(新)”和“文本搜索(新)”会在响应的 places 字段中返回一个地点对象数组。对于这些 API,places 是响应的顶级字段。

例如,如需查看“文本搜索(新)”的完整响应对象,请执行以下操作:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: *' \
'https://places.googleapis.com/v1/places:searchText'

文本搜索(新)调用的完整响应对象的格式如下:

{
  "places": [
    {
      "name": "places/ChIJs5ydyTiuEmsR0fRSlU0C7k0",
      "id": "ChIJs5ydyTiuEmsR0fRSlU0C7k0",
      "types": [
        "vegetarian_restaurant",
        "vegan_restaurant",
        "meal_takeaway",
        "restaurant",
        "food",
        "point_of_interest",
        "establishment"
      ],
      "nationalPhoneNumber": "0433 479 794",
      "internationalPhoneNumber": "+61 433 479 794",
      "formattedAddress": "29 King St, Sydney NSW 2000, Australia",
      "displayName": {
        "text": "Spiced @ Barangaroo",
        "languageCode": "en"
      },      ...
    },
  ...
  ]
}

因此,您可以使用以下形式为这些 API 指定字段掩码:

places[.secondLevelField][.thirdLevelField][...]

如果您只想返回 formattedAddressdisplayName 字段,请将字段掩码设置为:

places.formattedAddress,places.displayName

指定 displayName 会同时包含 displayNametextlanguage 字段。如果您只需要 text 字段,请将字段掩码设置为:

places.formattedAddress,places.displayName.text

为“地点详情(新)”定义响应字段掩码

“地点详情”会返回一个采用以下形式的地点对象:

{
  "name": "places/ChIJkR8FdQNB0VQRm64T_lv1g1g",
  "id": "ChIJkR8FdQNB0VQRm64T_lv1g1g",
  "types": [
    "locality",
    "political"
  ],
  "formattedAddress": "Trinidad, CA 95570, USA",
  "displayName": {
    "text": "Trinidad",
    "languageCode": "en"
  }
  ...
}

因此,您可以通过指定要返回的地点对象的字段来为此 API 指定字段掩码:

curl -X GET -H 'Content-Type: application/json' \
-H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: formattedAddress,displayName" \
https://places.googleapis.com/v1/places/ChIJj61dQgK6j4AR4GeTYWZsKWw

gRPC 调用

对于 gRPC,请设置包含响应字段掩码的变量。然后,您可以将该变量传递给请求。

const (
  fieldMask = "places.formattedAddress,places.displayName"
)

字段路径注意事项

请仅在响应中包含您需要的字段。仅返回您需要的字段:

  • 缩短处理时间,以便以更短的延迟时间返回结果。
  • 如果 API 日后添加了更多响应字段,并且这些新字段需要额外的计算时间,则可确保稳定的延迟时间性能。如果您选择所有字段,或者选择顶级级别的所有字段,当系统自动在响应中包含所有新字段时,您可能会遇到性能下降问题。
  • 缩减响应大小,从而提高网络吞吐量。
  • 确保您不会请求不必要的数据,这有助于避免产生不必要的处理时间和结算费用。