# baiduMapClustersMarker
**Repository Path**: q111211/baiduMapClustersMarker
## Basic Information
- **Project Name**: baiduMapClustersMarker
- **Description**: 这是一个百度地图自定义聚合样式和图层控制拓展方法的API
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 5
- **Created**: 2021-06-02
- **Last Updated**: 2021-06-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# baiduMapClustersMarker
#### 介绍
这是一个百度地图自定义聚合样式和图层控制拓展方法的API。
>
在百度官方版本的基础上拓展了自定义方法,具体见下方说明。
#### 拓展方法说明
**MarkerClusterer.js**
- 增加属性
`type` {Number} 自定义类型,用于方便控制隐藏和显示
`name` {String} 自定资源名称,用于方便控制隐藏和显示
`markerControl` {Boolean} 是否需要控制maker显示/隐藏,需要控制maker会默认被隐藏,否则直接显示
- 拓展方法
`addLabel()` // 对于单个点 添加自定义label
`addCustomizeMarker()` // 对于单个点 添加自定义marker
**TextIconOverlay.js**
- 增加属性
`type` {Number} type 表示资源类型
- 修改属性
`text` 由{String}改为{Json Object} // 表示该覆盖物显示的文字信息
- 拓展方法
`_updateClassName()` // 更新覆盖物的类名
#### 使用说明
- 引入资源
```js
```
Html部分
```html
```
Js部分 (代码基于Vue)
```js
// 定义地图
var map;
// 初始化百度地图
baiduMapInit: function() {
var self = this;
// 百度地图API功能
map = new BMap.Map(baidumapOptions.mapDiv,{
enableMapClick: false, // 禁用景点,场所等点击事件
minZoom: baidumapOptions.zoom
}); // 创建Map实例
map.centerAndZoom(new BMap.Point(baidumapOptions.center[1],baidumapOptions.center[0]), baidumapOptions.zoom); // 初始化地图,设置中心点坐标和地图级别
map.setMapStyle({ style: 'midnight' });
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
},
// 添加聚合点
createClustersMarker: function(markers,type,name){
var markerClusterer = new BMapLib.MarkerClusterer(map, {
markers: markers,
minClusterSize: 3, //最小的聚合数量,小于该数量的不能成为一个聚合,默认为2
type: type, // 资源类型
name: name, // 资源名称
markerControl: false, // 是否控制marker
styles: [{
textColor: '#fff',
backgroundColor: '#0080ff',
size: new BMap.Size(26, 26)
}]
});
},
// 获取警力(警员/警车/移动警务)
getPolice: function(){
var self = this;
// ... 省略无关代码
var policeMan = res.data.policeMan;
// 警力 [31|警员] - 地图点聚合需要
if(policeMan.length){
var markers = [];
var type = '31';
var name = 'jy';
policeMan.map(function(item){
if(item.jd && item.wd){
var point = new BMap.Point(item.jd, item.wd);
var marker = new BMap.Marker(point);
// marker携带自定义参数
marker.customData = {
"type": type,
"name": name,
"jd": item.jd,
"wd": item.wd,
"bmmc": item.bmmc,
"xm": item.xm,
}
marker.addEventListener('click', function(e){
// 绑定点击事件
});
markers.push(marker);
} else{
console.log('当前警员没有经纬度:', item);
}
});
// 给地图添加聚合点
self.createClustersMarker(markers,type,name);
}
// ... 省略无关代码
},
// 地图缩放、拖拽之后重新设置地图图层状态
chechMapLayerStatus(){
// 此处为控制marker显示/隐藏的方法,具体可参考以下示例,
if(item.type == 'xxbz'){ // 信息标识
if(item.checked){
$('.map .facility-xxbz-point').show();
$('.map .map-xxbz-cluster').show();
} else{
$('.map .facility-xxbz-point').hide();
$('.map .map-xxbz-cluster').hide();
}
}
// 说明,
// xxbz 为传递到js中的name属性
},
```