public里的index.html需要引入官方聚合的文件地址。或者文件。
我这边的map实例为map,并且赋值给this.map了
//存放所有创建完的聚合markers点
const markers = []
//所有点,这边只举例一个
const points = [{lat:坐标1,lng:坐标2,type:判断用什么图标类型,data:给点的值(点击点后获取)}]
points.forEach(item=>{
//创建点
pt = new BMapGL.Point(item.lat, item.lng)
//创建点的图标样式
const Icon = new BMapGL.Icon(`/img/micon${item.type}.png`, new BMapGL.Size(22, 24))
//创建点聚合
const marker = new BMapGL.Marker(pt, { icon: Icon })
//给每个点创建一个点击事件(),eee里打印有刚刚创建points的data属性。点开就是你给的值。
marker.addEventListener('click', (eee) => {
console.log('你点击了我,你要做什么?',eee)
})
//给点赋值这个data你可以任意改名字。你找的到属性名就行
marker.data = item
markers.push(marker)
})
//这边判断是否已经有绘制过点,绘制过就清除在重新绘制,否则直接绘制,[ this.markerdrea = ],这个是用来在其他地方万一也要清除点。可以直接执行this.markerdrea.clearMarkers(),清除
if (this.markerdrea) {
this.markerdrea.clearMarkers() // 清空撒点
this.markerdrea = new window.BMapGLLib.MarkerClusterer(this.map, { markers: data })
} else {
this.markerdrea = new window.BMapGLLib.MarkerClusterer(this.map, { markers: data })
}