请求参数

本文档介绍了 Places Aggregate API 的请求参数,并包含有关使用此服务的分析和最佳实践。

借助 Places Aggregate API,您可以执行多项关键功能:

  • 统计地点数量:确定符合特定条件的地点数量,例如位置类型、营业状态、价格水平和评分。
  • 检索地点详情:获取符合指定过滤条件的地点名称,然后使用 Places API 提取更详细的信息。
  • 灵活的过滤功能:应用全面的过滤条件,获取精确的汇总数据。可用的过滤条件包括:
    • 地理区域(圆形、区域或自定义多边形)
    • 地点类型
    • 营业状态
    • 价格水平
    • 分级范围

必需参数

本部分介绍了向 Places Aggregate API 发出请求时所需的参数。每个请求都必须提供以下信息:

  • 一种数据分析类型。
  • 位置过滤条件和类型过滤条件。

数据分析类型

指定要计算的分析类型。支持以下数据分析类型:

  • INSIGHT_COUNT:返回符合过滤条件的地点数量。
  • INSIGHT_PLACES:返回符合过滤条件的地点 ID

过滤条件

指定过滤地点的条件。您必须至少指定 LocationFilterTypeFilter

位置过滤条件

位置过滤条件可以具有以下类型之一:

  • circle:将区域定义为具有中心和半径的圆。
  • region:将某个区域定义为地区。
  • customArea:将某个区域定义为自定义多边形。
圆形

如果您选择将地理区域指定为圆形,则需要提供 centerradiuscenter 可以是纬度和经度,也可以是圆心的地点 ID。此方法可根据您定义的圆形区域进行精确而准确的过滤。

  • center
    • latLng:圆心的纬度和经度。纬度必须是介于 -90 到 90 之间的数字(含 -90 和 90)。经度必须是介于 -180 到 180 之间的数字(含端点值)。
    • place:圆心的地点 ID。请注意,系统仅支持点状地点。此字符串必须以 places/ 前缀开头。
  • radius:圆的半径(以米为单位)。此数值必须为正数。
区域

通过将地点 ID 传递给 place 参数,将您的区域定义为区域。地点 ID 表示地理区域(例如可用多边形表示的区域)。例如,佛罗里达州坦帕的地点 ID 为 places/ChIJ4dG5s4K3wogRY7SWr4kTX6c。请注意,并非所有地点 ID 都具有明确定义的几何形状,在这些情况下,Places Aggregate API 会返回 400 错误代码,并显示一条消息,指明相应区域不受支持。此外,对于复杂的地理区域,内部处理优化可能会导致代表该区域的面积略微过高估计(最多 2-3%)。

如需确定某个地点 ID 是否表示不受支持的地点类型,请在 Geocoding API 请求中传递该地点 ID。响应中包含 type 数组,其中列出了与地点 ID 关联的地点类型,例如 localityneighborhoodcountry。如果某个地点的任何类型与此列表中的类型匹配,则该地点将被拒绝进行区域过滤。

不支持的地点类型包括

  • establishment:通常表示某个尚未归类的地点。
  • intersection:表示主要交叉路口,通常是两条主要道路的交叉路口。
  • subpremise:表示营业场所级别以下的寻址实体,例如公寓、单元或套房。
自定义区域

使用纬度和经度坐标定义自定义多边形的区域。

您可以访问 https://geojson.io/ 绘制自定义多边形,然后将这些坐标输入到请求中。多边形必须至少包含 4 个坐标,其中第一个坐标和最后一个坐标相同。所提供的坐标中必须至少有 3 个是唯一的。

连续相同的坐标将被视为单个坐标。 不过,如果出现不连续的重复坐标(除了必需的相同第一个和最后一个坐标),则会导致错误。

此外,不允许非相邻的边相交,也不允许长度为 180 度的边(即相邻的顶点不能是对跖点)。

例如:

"coordinates":[
   {
      "latitude":37.776,
      "longitude":-122.666
   },
   {
      "latitude":37.130,
      "longitude":-121.898
   },
   {
      "latitude":37.326,
      "longitude":-121.598
   },
   {
      "latitude":37.912,
      "longitude":-122.247
   },
   {
      "latitude":37.776,
      "longitude":-122.666
   }
]

类型过滤

指定要包含或排除的地点类型。如需查看 Places Aggregate API 支持的主要和次要地点类型列表,请参阅 Places API(新)的地点类型下的表 A。您必须至少指定一种 includedTypesincludedPrimaryTypes 类型。

  • includedTypes:包含的位置类型列表。
  • excludedTypes:排除的地点类型列表。
  • includedPrimaryTypes:包含的主要地点类型列表。
  • excludedPrimaryTypes:排除的主要地点类型列表。

如需详细了解类型过滤条件和地点类型的运作方式,请参阅有关类型过滤条件的更多信息

可选参数

以下过滤条件为可选项:

  • operatingStatus:指定要包含或排除的地点的状态。 默认按 operatingStatus: OPERATING_STATUS_OPERATIONAL(一个特定值)进行过滤。
  • priceLevels:指定要纳入的场所的价格水平。默认情况下,系统不会应用任何价格水平过滤条件,并会返回所有地点(包括那些没有价格水平信息的地点)。
  • ratingFilter:指定地点的评分范围。默认情况下不进行过滤(结果中包含所有评分)。

营业状态

借助 operatingStatus 过滤器,您可以根据运营状态(例如 OPERATIONALTEMPORARILY_CLOSED)进行过滤。operatingStatus 过滤器的行为如下:

  • 如果未提供任何过滤条件,则结果中仅包含营业状态为 OPERATING_STATUS_OPERATIONAL 的地点。
  • 如果提供了一个或多个过滤条件,您必须指定有效的运行状态值(OPERATING_STATUS_OPERATIONALOPERATING_STATUS_PERMANENTLY_CLOSEDOPERATING_STATUS_TEMPORARILY_CLOSED)。

价格水平

借助 priceLevels 过滤条件,您可以根据地点的价格水平过滤地点。有效价格水平值包括:PRICE_LEVEL_FREEPRICE_LEVEL_INEXPENSIVEPRICE_LEVEL_MODERATEPRICE_LEVEL_EXPENSIVEPRICE_LEVEL_VERY_EXPENSIVE

priceLevels 过滤器的行为如下:

  • 如果未提供任何过滤条件:系统会返回所有地点,无论这些地点是否已分配价格水平。这包括没有价位信息的地方,如果按特定价位过滤,这些地方可能不会返回。
  • 如果提供了一个或多个过滤条件:则仅返回与指定价位匹配的地点。

“评分”过滤器

根据地点的平均用户评分过滤地点。这两个字段均为可选字段,因此如果省略,则默认还会包含没有评分的地点。

  • minRating:最低平均用户评分(介于 1.0 和 5.0 之间)。
  • maxRating:最高平均用户评分(介于 1.0 和 5.0 之间)。

此外,minRating 值必须始终小于或等于 maxRating 值。如果将 minRating 指定为大于 maxRating,则会返回 INVALID_ARGUMENT 错误。