# mapU.markerClusterer
新增一组聚合点位到地图。
@params: markerClustererOptions 聚合组配置参数
@returns: AMap.MarkerClusterer 实例
# markerClustererOptions
| 参数 | 类型 | 说明 |
|---|---|---|
| type | String | 当前聚合组唯一标识 |
| data | Array | 聚合组数据源,dataItem至少包括longitude,latitude |
| clusterStyles | Array | 聚合组用到的icon数组,配置参考,MarkerClustererOptions.styles |
| clusterOption | Object | 高德markerClusterer配置项,如果包含 styles 会覆盖掉设置的 clusterStyles |
| markerStyles | Array | 聚合组用到的icon数组,markerStylesItem 包含iconName:string和icon:iconOptions |
| initIcon | String | 点位默认初始图标,对应 markerStylesItem.iconName, 默认为图标数组第一项 |
| setLastIcon | Bollean | 默认 true,是否恢复上一个点击激活点位的图标 |
| markerOpt | Object | 高德Marker配置项,如果包含 icon 会覆盖掉设置的 initIcon |
| markerFormatter | Function | 一个点位格式化函数,数据源循环生成 marker 的时候调用,接收数据项 item ,index, icons作为参数,返回点位配置参数,后置于 markerOpt ,一般用于特殊点配置修改 |
| clickCallback | Function | 点位点击回调函数,接收 事件对象e,上一个点击点位oldClickMarker, 根据 markerStyles 生成的所有图标对象组icons。可以调用e.target.setIcon(icons.xxx) 改变点位 |
# 高德实例
marker点实例:数据循环生成
AMap.Marker实例, 原生方法属性 描述 _u_dataIndex记录的对应源数据数组的索引 _u_lastIcon记录的点图标改变之前的点 方法 描述 setIcon重置了 marker实例的setIcon方法,接受配置的iconName或者生成的icons中的icon作为参数,设置该点位图标, 内部会记录该点,作为下一次点击时的oldClickMarker数据数组的索引clusterer聚合实例:AMap.MarkerClusterer实例, 原生方法属性 描述 _u_data记录的对应源数据数组 _u_markersOptions记录的对应聚合组配置,用于追加数据。
function getPoints (n) {
const point = []
for (let i = 0; i < n; i++) {
point.push({
longitude: 120 + Math.random(),
latitude: 30 + Math.random()
})
}
return point
}
const markerStyles = [
{
iconName: 'normal',
icon: {
size: new AMap.Size(26, 36), // 图标尺寸
image: 'https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png', // 图标的取图地址
imageSize: new AMap.Size(26, 36), // 图标所用图片大小
imageOffset: new AMap.Pixel(0, 0)// 图标取图偏移量
}
},
{
iconName: 'active',
icon: {
size: new AMap.Size(39, 54),
image: 'https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png',
imageSize: new AMap.Size(39, 54),
imageOffset: new AMap.Pixel(0, 0)
}
}
]
const clusterStyles = [{
url: cluster,
size: new AMap.Size(64, 64),
textColor: '#fff',
textSize: 15
}]
mapU.markerClusterer({
type: 'default',
data: getPoints(),
markerStyles,
clusterStyles,
setLastIcon: true,
clickCallback: ({ target }, oldClickMarker, icons) => {
target.setIcon('active')
oldClickMarker.setIcon(icons['active'])
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# mapU.getMarkerClustererByType
获取一组聚合组。
@params: type 组标识
@returns: clusterer 聚合实例对象
mapU.getMarkerClustererByType('default')
1
# mapU.showMarkerClustererByType
显示一组聚合组。
@params: type 组标识
@returns: clusterer 聚合实例对象
mapU.showMarkerClustererByType('default')
1
# mapU.hideMarkerClustererByType
隐藏一组聚合组。
@params: type 组标识
@returns: clusterer 聚合实例对象
mapU.hideMarkerClustererByType('default')
1
# mapU.clearMarkerClustererByType
清除一组聚合组。
@params: type 组标识
@returns: clusterer 聚合实例对象
mapU.clearMarkerClustererByType('default')
1
# mapU.addMarkerClustererByType
向聚合组追加数据。
@params: type 组标识, data 要追加的数据
@returns: clusterer 聚合实例对象
mapU.addMarkerClustererByType('default', getPoints())
1
# mapU.getClusterExtDataByType
获取一组聚合组数据源。
@params: type 组标识
@returns: data 聚合组数据源
mapU.getClusterExtDataByType('default')
1
# mapU.inactiveLastMarker
恢复上一个点击点位的图标。
mapU.inactiveLastMarker()
1