# ClusterLayer
查阅Leaflet API

#### new mars2d.layer.ClusterLayer(options)
layer/graphicLayer/ClusterLayer.js 29

聚合点 图层

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | Object | 参数对象，包括以下：
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`zoomToBoundsOnClick` | Boolean | `true` | 可选 当你点击一个集群时，是否缩放到它的边界
`showCoverageOnHover` | Boolean | `true` | 可选 将鼠标悬停在集群上时，是否显示其标记的边界
`spiderLegPolylineOptions` | Polyline.StyleOptions | Object |  | 可选 允许你指定聚群单击散开的连接线样式。
`polygonOptions` | Polygon.StyleOptions | Object |  | 可选 集群的Polygon边界的样式
`maxClusterRadius` | Number | function | `80` | 可选 集群将从中央标记覆盖的最大半径（以像素为单位）。减少会使更多，更小的群集。 您也可以使用接受当前地图缩放的函数，并以像素为单位返回最大群集半径。
`singleMarkerMode` | Boolean | `false` | 可选 如果设置为true，则覆盖所有添加标记的图标，使其显示为1尺寸的群集。注意：标记不会被集群对象替换，只会替换它们的图标。因此，他们仍然对正常事件作出反应，选项disableClusteringAtZoom不会恢复其以前的图标
`removeOutsideVisibleBounds` | Boolean | `true` | 可选 当离开视图太远的集群和标记，是否将其从地图中移除以获得性能。
`spiderfyOnMaxZoom` | Boolean | `true` | 可选 当在最底层级别时，点击一个集群时，如果他们重叠着，我们是否可以通过spiderLeg连接线散开方式看到它的所有标记。
`spiderfyDistanceMultiplier` | Number | `1` | 可选 从1增加增加距离中心的距离，spiderfied marker被放置。如果您使用大标记图标，则使用
`animate` | Boolean | `true` | 可选 在缩放时是否有平滑分割/合并群集子项的动画。如果L.DomUtil.TRANSITION为false，则此选项不起作用（不可能有动画）
`chunkedLoading` | Boolean | `false` | 可选 在执行addLayer方法时，将处理分成很小的时间间隔，这样页面就不会冻结。
`chunkInterval` | Number | `200` | 可选 在执行addLayer方法时， 暂停之前让页面的其他部分处理的时间间隔（以毫秒为单位）。 特别是，这样可以防止页面在添加大量标记时被冻结。
`chunkDelay` | Number | `50` | 可选 在执行addLayer方法时， 连续处理周期之间的时间延迟（以毫秒为单位）
`chunkProgress` | boolean | `true` | 可选 在每个chunkInterval结尾调用的回调函数。通常用于实现进度指示器。
`iconCreateFunction` | function |  | 可选 自定义创建集群图标的功能
`disableClusteringAtZoom` | Number |  | 可选 如果设置，在此缩放级别及以下，标记将不会聚集,注意：在使用disableClusteringAtZoom时，您可能有兴趣禁用spiderfyOnMaxZoom选项。
`id` | String | Number | `createGuid()` | 可选 图层id标识
`pid` | String | Number | `-1` | 可选 图层父级的id，一般图层管理中使用
`name` | String | `''` | 可选 图层名称
`pane` | String | `'overlayPane'` | 可选 指定图层添加到地图的哪个pane的DIV中，用于控制不同层级显示的，优先级高于zIndex。

##### 参考:

- `支持的事件类型`

- 更多请参考 leaflet.markercluster

### 继承自

- MarkerClusterGroup

### 属性值

#### clusterEnabled : boolean
layer/graphicLayer/ClusterLayer.js 302

是否开启聚合，如果修改聚合属性请调用setOptions方法

#### id : String|Number
layer/graphicLayer/ClusterLayer.js 97

对象的id标识

#### 只读 isAdded : Boolean
layer/graphicLayer/ClusterLayer.js 75

是否已添加到地图

#### name : String
layer/graphicLayer/ClusterLayer.js 110

名称 标识

#### pid : String|Number
layer/graphicLayer/ClusterLayer.js 84

对象的pid标识

#### show : Boolean
layer/graphicLayer/ClusterLayer.js 123

显示隐藏状态

### 方法

#### addEventParent(obj) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 854

添加抛出事件到父类，它将接收传播的事件

参数名称 | 类型 | 描述信息
--- | --- | ---
`obj` | Object | 父类对象

##### 返回值:

当前对象本身,可以链式调用

#### addGraphic(graphic) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 185

添加 图标点矢量对象 到本图层

参数名称 | 类型 | 描述信息
--- | --- | ---
`graphic` | Marker | 图标点矢量对象

##### 返回值:

当前对象本身，可以链式调用

#### addTo(map) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 628

将图层添加到地图

参数名称 | 类型 | 描述信息
--- | --- | ---
`map` | Map | 地图对象

##### 返回值:

当前对象本身，可以链式调用

#### bindContextMenu(contextmenuItems) → Map
layer/graphicLayer/ClusterLayer.js 761

绑定右键菜单

参数名称 | 类型 | 描述信息
--- | --- | ---
`contextmenuItems` | Array.<Object> | 右键菜单数组

##### 返回值:

当前对象本身，可以链式调用

#### bindPopup(content, options) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 268

绑定Popup弹窗配置

参数名称 | 类型 | 描述信息
--- | --- | ---
`content` | String | HTMLElement | function | L.Popup | Popup弹窗内容
`options` | Map.PopupOptions | Object | 可选 Popup弹窗参数

##### 返回值:

当前对象本身，可以链式调用

#### bindTooltip(content, options) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 694

绑定Tooltip弹窗配置

参数名称 | 类型 | 描述信息
--- | --- | ---
`content` | String | HTMLElement | function | L.Tooltip | Tooltip弹窗内容
`options` | Map.TooltipOptions | Object | 可选 Tooltip弹窗参数

##### 返回值:

当前对象本身，可以链式调用

#### bringToBack() → ClusterLayer
layer/graphicLayer/ClusterLayer.js 591

将图层置于所有图层之下

##### 返回值:

当前对象本身,可以链式调用

#### bringToFront() → ClusterLayer
layer/graphicLayer/ClusterLayer.js 582

将图层置于所有图层之上

##### 返回值:

当前对象本身,可以链式调用

#### clear() → void
layer/graphicLayer/ClusterLayer.js 241

清除图层内所有矢量数据

##### 返回值:

无

#### closePopup() → ClusterLayer
layer/graphicLayer/ClusterLayer.js 657

关闭打开的弹窗

##### 返回值:

当前对象本身，可以链式调用

#### closeTooltip() → ClusterLayer
layer/graphicLayer/ClusterLayer.js 724

关闭打开的弹窗

##### 返回值:

当前对象本身，可以链式调用

#### eachGraphic(method, context) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 233

遍历所有矢量数据并将其作为参数传递给回调函数

参数名称 | 类型 | 描述信息
--- | --- | ---
`method` | function | 回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

当前对象本身,可以链式调用

#### fire(type, data, propagate) → void
layer/graphicLayer/ClusterLayer.js 815

触发指定类型的事件。

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`type` | String | EventType |  | 事件类型
`data` | Object |  | 可选 传输的数据或对象，可在事件回调方法中event对象中获取进行使用
`propagate` | BaseClass | Object | `null` | 可选 将事件传播给父类 (用addEventParent设置)

##### 返回值:

无

#### flyTo(options) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 259

执行平滑的飞行动画，移动缩放地图范围至指定的数据范围

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | Object | 可选 定位参数，包括:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`paddingTopLeft` | L.Point | Array.<Number> |  | 可选 设置在将视图设置为适合边界时不应考虑的地图容器左上角的填充量。如果您在地图上有一些控件重叠式（如侧边栏），而且您不希望它们遮挡您正在缩放的对象，则很有用。
`paddingBottomRight` | L.Point | Array.<Number> |  | 可选 同上，不考虑地图容器右下角时使用。
`padding` | L.Point | Array.<Number> |  | 可选 相当于将左上和右下填充设置为相同的值。
`maxZoom` | Number |  | 可选 最大层级
`animate` | Boolean | `true` | 可选 是否进行动画缩放。false时始终重置视图完全没有动画。
`duration` | Number | `0.25` | 可选 动画平移的持续时间，以秒为单位。
`easeLinearity` | Number | `0.25` | 可选 平移动画宽松的曲率因子 Cubic Bezier curve曲线的第三个参数。1.0表示线性动画，而这个数字越小，曲线越鞠躬。
`noMoveStart` | Boolean | `false` | 可选 如果true，平移不会movestart在启动时触发事件（内部用于平移惯性）。

##### 返回值:

当前对象本身，可以链式调用

#### getBounds() → L.LatLngBounds
layer/graphicLayer/ClusterLayer.js 600

获取图层矩形边界

##### 返回值:

矩形边界

#### getContextMenu() → Array.<Object>
layer/graphicLayer/ClusterLayer.js 771

获取绑定的右键菜单

##### 返回值:

右键菜单数组

#### getPopup() → L.Popup
layer/graphicLayer/ClusterLayer.js 685

获取当前绑定在图层上的Popup弹窗对象

##### 返回值:

Popup弹窗对象

#### getTooltip() → L.Tooltip
layer/graphicLayer/ClusterLayer.js 752

获取当前绑定在图层上的Tooltip弹窗对象

##### 返回值:

Tooltip弹窗对象

#### getVisibleParent(marker) → Marker
layer/graphicLayer/ClusterLayer.js 543

想要获取标记的可见父项（自身或包含在其中的群集当前在地图上可见）。

参数名称 | 类型 | 描述信息
--- | --- | ---
`marker` | Marker | 标记

##### 返回值:

可见父项（自身或包含在其中的群集当前在地图上可见）。 如果标记及其父集合当前不可见，则返回null（它们不在可见视点附近）

#### hasGraphic(graphic) → Boolean
layer/graphicLayer/ClusterLayer.js 223

是否包含Graphic矢量数据

参数名称 | 类型 | 描述信息
--- | --- | ---
`graphic` | * | 矢量数据

##### 返回值:

是否包含

#### isPopupOpen() → boolean
layer/graphicLayer/ClusterLayer.js 666

当前绑定的弹窗是是否打开

##### 返回值:

是否打开弹窗

#### isTooltipOpen() → boolean
layer/graphicLayer/ClusterLayer.js 733

当前绑定的弹窗是是否打开

##### 返回值:

是否打开弹窗

#### listens(type, propagate) → Boolean
layer/graphicLayer/ClusterLayer.js 842

是否有绑定指定的事件

参数名称 | 类型 | 描述信息
--- | --- | ---
`type` | String | EventType | 事件类型
`propagate` | Object | 可选 是否判断指定的父类 (用addEventParent设置的)

##### 返回值:

是否存在

#### off(types, fn, context) → void
layer/graphicLayer/ClusterLayer.js 802

解除绑定指定类型事件监听器

参数名称 | 类型 | 描述信息
--- | --- | ---
`types` | String | EventType | Object | 可选 事件类型，Object时删除一组类型/侦听器对。
`fn` | function | 可选 绑定的监听器回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

无

#### on(type, fn, context) → void
layer/graphicLayer/ClusterLayer.js 789

绑定指定类型事件监听器

参数名称 | 类型 | 描述信息
--- | --- | ---
`type` | String | EventType | Object | 事件类型，当是Object时可以添加一组类型/侦听器对，例如 {click: onClick, mousemove: onMouseMove}
`fn` | function | 可选 绑定的监听器回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

无

#### once(types, fn, context) → void
layer/graphicLayer/ClusterLayer.js 828

绑定一次性执行的指定类型事件监听器 与on类似，监听器只会被触发一次，然后被删除。

参数名称 | 类型 | 描述信息
--- | --- | ---
`types` | String | EventType | Object | 可选 事件类型，Object时删除一组类型/侦听器对。
`fn` | function | 可选 绑定的监听器回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

无

#### openPopup(latlng) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 647

打开Popup弹窗

参数名称 | 类型 | 描述信息
--- | --- | ---
`latlng` | L.LatLng | 可选 位置,如果latlng没有设置则在默认的所在位置打开。

##### 返回值:

当前对象本身，可以链式调用

#### openTooltip(latlng) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 714

打开Tooltip弹窗

参数名称 | 类型 | 描述信息
--- | --- | ---
`latlng` | L.LatLng | 可选 位置,如果latlng没有设置则在默认的所在位置打开。

##### 返回值:

当前对象本身，可以链式调用

#### refreshClusters(markers) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 553

如果您已自定义群集图标以使用所包含标记中的某些数据，并且之后数据发生更改，请使用此方法强制刷新群集图标。

参数名称 | 类型 | 描述信息
--- | --- | ---
`markers` | Marker | Array.<Marker> | 可选 标记

##### 返回值:

当前对象本身，可以链式调用

##### 使用示例:

    //没有参数强制重新绘制标记集群组中的所有集群图标。
    markers.refreshClusters();
    //用一个标记。
    markers.refreshClusters(myMarker);
    //使用一个数组或一个标记映射来强制只重新绘制它们的父集群。
    markers.refreshClusters([myMarker0, myMarker33]);
    markers.refreshClusters({id_0: myMarker0, id_any: myMarker33});

#### remove() → ClusterLayer
layer/graphicLayer/ClusterLayer.js 638

将图层从地图上移除

##### 返回值:

当前对象本身，可以链式调用

#### removeEventParent(obj) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 864

移除抛出事件到父类

参数名称 | 类型 | 描述信息
--- | --- | ---
`obj` | Object | 父类对象

##### 返回值:

当前对象本身,可以链式调用

#### removeGraphic(graphic) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 214

移除指定矢量对象

参数名称 | 类型 | 描述信息
--- | --- | ---
`graphic` | Marker | 指定矢量对象

##### 返回值:

当前对象本身，可以链式调用

#### setPopupContent(content) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 675

设定绑定在图层上的弹窗的内容

参数名称 | 类型 | 描述信息
--- | --- | ---
`content` | String | HTMLElement | L.Popup | Popup弹窗内容

##### 返回值:

当前对象本身，可以链式调用

#### setTooltipContent(content) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 742

设定绑定在图层上的弹窗的内容

参数名称 | 类型 | 描述信息
--- | --- | ---
`content` | String | HTMLElement | L.Tooltip | Tooltip弹窗内容

##### 返回值:

当前对象本身，可以链式调用

#### setZIndex(zIndex) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 618

调用setZIndex此组中包含的每个图层，传递z-index。

参数名称 | 类型 | 描述信息
--- | --- | ---
`zIndex` | Number | 图层顺序值

##### 返回值:

当前对象本身，可以链式调用

#### toGeoJSON() → Object
layer/graphicLayer/ClusterLayer.js 609

将图层内的矢量数据转为GeoJSON格式对象

##### 返回值:

返回GeoJSON格式对象（作为GeoJSON GeometryCollection）。

#### unbindContextMenu() → Map
layer/graphicLayer/ClusterLayer.js 780

解除绑定右键菜单

##### 返回值:

当前对象本身，可以链式调用

#### unbindPopup() → ClusterLayer
layer/graphicLayer/ClusterLayer.js 284

解除绑定Popup弹窗配置

##### 返回值:

当前对象本身，可以链式调用

#### unbindTooltip() → ClusterLayer
layer/graphicLayer/ClusterLayer.js 705

解除绑定Tooltip弹窗配置

##### 返回值:

当前对象本身，可以链式调用

#### zoomToShowLayer(marker, callback) → ClusterLayer
layer/graphicLayer/ClusterLayer.js 571

缩放以显示给定的标记（如果需要的话，spiderfying），当标记在地图上可见时调用回调。

参数名称 | 类型 | 描述信息
--- | --- | ---
`marker` | Marker | 标记
`callback` | function | 标记

##### 返回值:

当前对象本身，可以链式调用

### 定义的类型

#### mars2d.layer.ClusterLayer.EventType
layer/graphicLayer/ClusterLayer.js 9

当前类支持的`EventType`事件类型（包括自定义字符串事件名）

##### 属性:

属性名称 | 类型 | 描述信息
--- | --- | ---
`clusterclick` | String | 单击聚合点
`clustermouseover` | String | 鼠标移入聚合点
`clustermouseout` | String | 鼠标移出聚合点
`animationend` | String | 当标记聚类/非聚集动画完成时触发
`spiderfied` | String | 当重叠的标记被spiderified时触发（Contains cluster和markersattributes）
`unspiderfied` | String | 当重叠标记得到隐藏时触发（Contains cluster和markersattributes）

##### 使用示例:

    //绑定监听事件
    markers.on('clusterclick', function (a) {
     a.layer.zoomToBounds({padding: [20, 20]});
    });

##### 参考:

- BaseClass#on
- BaseClass#off