1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- // import * as ol from 'ol'
- import ol from './ol'
- class createCluster {
- constructor(option, map) {
- this.layer = null
- this.flag = false // 用于判断是否有目标图层
- let layer = map.getLayers()
- this.map = map
- this.imgUrl = option.imgUrl //图标路径
- this.layerName = option.layerName // 传入聚合的目标图层的名字
- this.distance = option.distance || 10//聚合的距离默认30个像素
- for (let i = 0; i < layer.array_.length; i++) {
- if(layer.array_[i].className_ === this.layerName){
- this.flag = true
- this.layer = layer.array_[i]
- }
- }
- }
- openCluster() {
- if (this.flag) {
- let scale = 0.13
- let features = this.layer.getSource().getFeatures()
- var source = new ol.source.Vector({
- features: features
- });
- //聚合标注数据源
- var clusterSource = new ol.source.Cluster({
- distance: this.distance, //聚合的距离参数,即当标注间距离小于此值时进行聚合,单位是像素
- source: source //聚合的数据源,即矢量要素数据源对象
- });
- //加载聚合标注的矢量图层
- let style = new ol.style.Style({
- image: new ol.style.Icon({
- src: this.imgUrl,
- anchor: [0.5, 0.5],
- scale: scale,
- })
- })
- this.layer.setSource(clusterSource)
- this.layer.setStyle(style)
- }
- }
- }
- function openNoticeLayerCluster(noticeImgUrl,map) {
- let cluster = new createCluster({
- 'layerName' : 'noticeLayer',
- 'imgUrl' : noticeImgUrl
- },map)
- cluster.openCluster()
- }
- function openReportLayerCluster(reportImgUrl,map) {
- let cluster = new createCluster({
- 'layerName' : 'reportLayer',
- 'imgUrl' : reportImgUrl
- },map)
- cluster.openCluster()
- }
- function openCultureLayerCluster(cultureImgUrl,map) {
- let cluster = new createCluster({
- 'layerName' : 'cultureLayer',
- 'imgUrl' : cultureImgUrl
- },map)
- cluster.openCluster()
- }
- function openOtherLayerCluster(otherImgUrl,map) {
- let cluster = new createCluster({
- 'layerName' : 'otherLayer',
- 'imgUrl' : otherImgUrl
- },map)
- cluster.openCluster()
- }
- export default {openNoticeLayerCluster,openReportLayerCluster,openCultureLayerCluster,openOtherLayerCluster}
|