// docs: https://lbs.qq.com/webApi/javascriptGL/glDoc/glDocCluster declare namespace TMap { class MarkerCluster implements MarkerClusterOptions { constructor(options: MarkerClusterOptions); /** * 设置地图对象, 如果 map 为 null 意味着将点聚合图层从地图中移除 */ setMap(map: Map | null): MarkerCluster; /** * 更新点数据, 如果参数为 null 或 undefined 不会做任何处理 */ setGeometries(geometries?: PointGeometry[] | null): MarkerCluster; /** * 获取地图对象, 若为空返回 null */ getMap(): Map | null; /** * 获取图层的 id */ getId(): this; /** * 获取当前地图视野范围内, 聚合后的聚合簇数据, 聚合是异步操作, * 可以绑定 cluster_changed 事件获取每次地图上最新的聚合簇 */ getClusters(): ClusterInfo[]; /** * 获取点数据 */ getGeometries(): PointGeometry[]; /** * 根据点数据 id 来获取点数据 */ getGeometryById(id: string): PointGeometry; /** * 更新标注点数据, 如果 geometry 的 id 存在于聚合点的集合中, 会更新对 id 的数据, 如果之前不存在于集合中, 会作为新的点标注添加到集合中进行聚合, * 如果参数为 null 或 undefined 不会做任何处理 */ updateGeometries(geometry?: PointGeometry[] | null): this; /** * 向图层中添加标注点 * 如果 geometry 的 id 已经存在集合中, 则该 geometry 不会被重复添加 * 如果 geometry 没有 id 或者 id 不存在于集合中会被添加到集合中进行聚合 * 没有 id 的 geometry 会被赋予一个唯一 id * 如果要添加到集合中的标注存在重复 id, 这些标注点会被重新分配 id * 如果参数为 null 或 undefined 不会做任何处理 */ add(geometries?: PointGeometry[] | null): this; /** * 移除指定 id 的标注点, 如果参数为 null 或 undefined 不会做任何处理 */ remove(ids?: string[] | null): this; on( eventName: 'click', listener: (evt: ClusterInfo[] | PointGeometry) => void ): this; on(eventName: 'cluster_changed', listener: () => void): this; /** * 从 eventName 事件的监听器数组中移除指定的 listener */ off(eventName: 'cluster_changed' | 'click', listener: () => void): this; } interface ClusterInfo { /** * 聚合簇的位置点 */ center: LatLng; /** * 该聚合簇内的点标记数据数组, * 注: 该点标记不支持通过style更改样式 */ geometries: PointGeometry[]; /** * 聚合簇的边界范围 */ bounds: LatLngBounds; } }