|
@@ -104,9 +104,6 @@ import phoneCard from './card.vue'
|
|
|
// slogan
|
|
|
import slogan from './slogan.vue'
|
|
|
|
|
|
-// cluster
|
|
|
-import cluster from '../../static/js/clusterDisplay'
|
|
|
-
|
|
|
// 地图对象
|
|
|
// eslint-disable-next-line
|
|
|
var map = null
|
|
@@ -321,9 +318,29 @@ export default {
|
|
|
})
|
|
|
targetLayer.setSource(clusterSource)
|
|
|
let style = (feature) => {
|
|
|
- let lastFeature = feature.get('features')[feature.get('features').length - 1]
|
|
|
+ let features = feature.get('features')
|
|
|
+ let size = features.length
|
|
|
+ let lastFeature = features[size - 1]
|
|
|
+ let lonArr = []
|
|
|
+ let latArr = []
|
|
|
+ // 存储图标聚合的点的矩形范围
|
|
|
+ if (feature.get('features').length > 1) {
|
|
|
+ for (let i = 0; i < size - 1; i++) {
|
|
|
+ let coordinate = features[i].values_.geometry.flatCoordinates
|
|
|
+ lonArr.push(coordinate[0])
|
|
|
+ latArr.push(coordinate[1])
|
|
|
+ }
|
|
|
+ let maxLon = Math.max(...lonArr)
|
|
|
+ let minLon = Math.min(...lonArr)
|
|
|
+ let maxLat = Math.max(...latArr)
|
|
|
+ let minLat = Math.min(...latArr)
|
|
|
+ let extent = [minLon, minLat, maxLon, maxLat]
|
|
|
+ feature.set('extent', extent)
|
|
|
+ }
|
|
|
feature.set('id', lastFeature.values_.id)
|
|
|
feature.set('type', lastFeature.values_.type)
|
|
|
+ feature.set('number', feature.get('features').length)
|
|
|
+
|
|
|
let style = layerStyle
|
|
|
return style
|
|
|
}
|
|
@@ -439,9 +456,7 @@ export default {
|
|
|
// 要素装载入图层
|
|
|
// 1.起始点
|
|
|
layer.getSource().addFeature(feature)
|
|
|
- // if (!isLocate) {
|
|
|
- // layer.getSource().addFeature(feature)
|
|
|
- // }
|
|
|
+
|
|
|
// 2.关联线
|
|
|
let fe = null
|
|
|
if (isRelate && msg.relate) {
|
|
@@ -681,24 +696,31 @@ export default {
|
|
|
if (feature) {
|
|
|
var id = feature.get('id')
|
|
|
let type = feature.get('type')
|
|
|
- let data = null
|
|
|
- switch (type) {
|
|
|
- case 'notice':
|
|
|
- data = await that.loadNoticeByID(id)
|
|
|
- break
|
|
|
- case 'report':
|
|
|
- data = await that.loadReportByID(id)
|
|
|
- break
|
|
|
- case 'culture':
|
|
|
- data = await that.loadCultureByID(id)
|
|
|
- break
|
|
|
- case 'other':
|
|
|
- data = await that.loadOthersByID(id)
|
|
|
- break
|
|
|
+ let number = feature.get('number')
|
|
|
+ if (number === 1) {
|
|
|
+ let data = null
|
|
|
+ switch (type) {
|
|
|
+ case 'notice':
|
|
|
+ data = await that.loadNoticeByID(id)
|
|
|
+ break
|
|
|
+ case 'report':
|
|
|
+ data = await that.loadReportByID(id)
|
|
|
+ break
|
|
|
+ case 'culture':
|
|
|
+ data = await that.loadCultureByID(id)
|
|
|
+ break
|
|
|
+ case 'other':
|
|
|
+ data = await that.loadOthersByID(id)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ that.printFeature('markLayer', data, type, true, true, true)
|
|
|
+ that.isShow = true
|
|
|
+ bus.$emit('closeList')
|
|
|
+ } else {
|
|
|
+ // 当点击的图标个数大于1时设置视角范围为多个图标的矩形范围
|
|
|
+ let extent = feature.get('extent')
|
|
|
+ map.getView().fit(extent, map.getSize())
|
|
|
}
|
|
|
- that.printFeature('markLayer', data, type, true, true, true)
|
|
|
- that.isShow = true
|
|
|
- bus.$emit('closeList')
|
|
|
} else {
|
|
|
that.closePopup()
|
|
|
}
|
|
@@ -710,10 +732,17 @@ export default {
|
|
|
return feature
|
|
|
})
|
|
|
if (feature) {
|
|
|
- bus.$emit('printMapMark', {
|
|
|
- type: feature.get('type'),
|
|
|
- id: feature.get('id')
|
|
|
- })
|
|
|
+ let number = feature.get('number')
|
|
|
+ if (number === 1) {
|
|
|
+ bus.$emit('printMapMark', {
|
|
|
+ type: feature.get('type'),
|
|
|
+ id: feature.get('id')
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ // 当点击的图标个数大于1时设置视角范围为多个图标的矩形范围
|
|
|
+ let extent = feature.get('extent')
|
|
|
+ map.getView().fit(extent, map.getSize())
|
|
|
+ }
|
|
|
} else {
|
|
|
that.closePopup()
|
|
|
}
|
|
@@ -917,7 +946,6 @@ export default {
|
|
|
function onMouseWheel (ev) {
|
|
|
window.setTimeout(function () {
|
|
|
let zoom = map.getView().getZoom()
|
|
|
- console.log('zoom:' + zoom)
|
|
|
if (zoom > 15.3) {
|
|
|
that.slogan.isShow = false
|
|
|
} else {
|
|
@@ -942,16 +970,6 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- /**
|
|
|
- * @description:图层 点聚合
|
|
|
- */
|
|
|
- openCluster: function () {
|
|
|
- cluster.openNoticeLayerCluster(info, map)
|
|
|
- cluster.openReportLayerCluster(report, map)
|
|
|
- cluster.openCultureLayerCluster(culture, map)
|
|
|
- cluster.openOtherLayerCluster(more, map)
|
|
|
- },
|
|
|
-
|
|
|
/**
|
|
|
* @description: eventBus的bus.$on 触发事件汇总
|
|
|
*/
|
|
@@ -1065,7 +1083,6 @@ export default {
|
|
|
this.loadRecentNotices(365)
|
|
|
this.loadOthers()
|
|
|
this.loadCulture()
|
|
|
- this.openCluster()
|
|
|
this.mapClick()
|
|
|
this.sloganListener()
|
|
|
},
|