From 9a37c5e1b2190c3f6ec71483923922189091dd52 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 18 Dec 2024 09:42:01 +0800
Subject: [PATCH] 事件模拟更新
---
src/pages/map/components/scomponents/layersControl.vue | 259 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 196 insertions(+), 63 deletions(-)
diff --git a/src/pages/map/components/scomponents/layersControl.vue b/src/pages/map/components/scomponents/layersControl.vue
index 899594a..1694931 100644
--- a/src/pages/map/components/scomponents/layersControl.vue
+++ b/src/pages/map/components/scomponents/layersControl.vue
@@ -2,7 +2,7 @@
* @Author: shuishen 1109946754@qq.com
* @Date: 2024-10-31 10:47:29
* @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2024-12-06 16:13:43
+ * @LastEditTime: 2024-12-10 14:33:31
* @FilePath: \bigScreen\src\pages\map\components\scomponents\layersControl.vue
* @Description:
*
@@ -54,6 +54,9 @@
let addTileLayers = {}
let tileLayers = new DC.TilesetLayer('tileLayers')
window.$viewer.addLayer(tileLayers)
+
+let planToBuild = new DC.HtmlLayer('planToBuild')
+window.$viewer.addLayer(planToBuild)
const {
show: showLayerControl
@@ -155,83 +158,184 @@
parentId: '3',
id: '3-1',
label: '应急池',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 1,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png',
- className: 'yjc-box',
- showPanel: false,
- layerName: 'yjc',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
- window.$viewer.addLayer(addPopLayers[attrParams.id])
- let iconEl = `<div class="marsBlueGradientPnl">
+ children: [
+ {
+ parentId: '3-1',
+ id: '3-1-1',
+ label: '园区',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 1,
+ size: 1000,
+ category: 1
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png',
+ className: 'yjc-box',
+ showPanel: false,
+ layerName: 'yjc-yq',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
<div>企业名称:${attrParams.firmName}</div>
<div>作用:${attrParams.mainFuncName}</div>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.id].addOverlay(divIcon)
- }
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
+ },
+ {
+ parentId: '3-1',
+ id: '3-1-2',
+ label: '企业',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 1,
+ size: 1000,
+ category: 2
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png',
+ className: 'yjc-box',
+ showPanel: false,
+ layerName: 'yjc-qy',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
+ <div>企业名称:${attrParams.firmName}</div>
+ <div>作用:${attrParams.mainFuncName}</div>
+ </div>`
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
+ ${iconEl}
+ </div>`
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
+ },
+ ]
},
+
{
parentId: '3',
id: '3-2',
label: '阀门',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 2,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/ysf.png',
- className: 'ysf-box',
- showPanel: false,
- layerName: 'fm',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
- window.$viewer.addLayer(addPopLayers[attrParams.id])
- let iconEl = `<div class="marsBlueGradientPnl">
+ children: [
+ {
+ parentId: '3-2',
+ id: '3-2-1',
+ label: '园区',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 2,
+ size: 1000,
+ category: 1
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/ysf.png',
+ className: 'ysf-box',
+ showPanel: false,
+ layerName: 'fm-yq',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
<div>企业名称:${attrParams.firmName}</div>
<div>作用:${attrParams.mainFuncName}</div>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
+ },
+ {
+ parentId: '3-2',
+ id: '3-2-2',
+ label: '企业',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 2,
+ size: 1000,
+ category: 2
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/ysf.png',
+ className: 'ysf-box',
+ showPanel: false,
+ layerName: 'fm-qy',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
+ <div>企业名称:${attrParams.firmName}</div>
+ <div>作用:${attrParams.mainFuncName}</div>
+ </div>`
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
+ ${iconEl}
+ </div>`
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
}
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.id].addOverlay(divIcon)
- }
+ ]
},
{
@@ -900,8 +1004,26 @@
if (i.properties.RefName.indexOf('拟建') != -1) {
polylineVolume.setStyle({
- material: DC.Color.fromBytes(234, 93, 240, 230)
+ material: DC.Color.fromBytes(255, 0, 0, 230)
})
+
+ let features = window.$turf.featureCollection(
+ i.geometry.coordinates.map(d => window.$turf.point([d[0], d[1]]))
+ )
+
+ let planCenter = window.$turf.center(features)
+
+ let planDivIcon = new DC.DivIcon(
+ new DC.Position(planCenter.geometry.coordinates[0], planCenter.geometry.coordinates[1], 60.5),
+ `<div class="public-map-popup">
+ <div class="map-name">拟建</div>
+ <div class="map-icon">
+ <img src="${VITE_APP_BASE + 'img/mapicon/nj-ys.png'}">
+ </div>
+ </div>`
+ )
+
+ planToBuild.addOverlay(planDivIcon)
} else {
polylineVolume.setStyle({
material: item.color
@@ -953,6 +1075,10 @@
window.$viewer && window.$viewer.removeLayer(addTileLayers[item.layerName])
addTileLayers[item.layerName] = null
delete addTileLayers[item.layerName]
+
+ if (item.layerName == 'ysgw' && planToBuild) {
+ planToBuild.clear()
+ }
}
}
}
@@ -1107,6 +1233,13 @@
window.$viewer && window.$viewer.removeLayer(tileLayers)
tileLayers = null
}
+
+ if (planToBuild) {
+ planToBuild.remove()
+ window.$viewer && window.$viewer.removeLayer(planToBuild)
+ planToBuild = null
+ }
+
// 弹窗销毁
destroyPop()
addPopLayers = null
--
Gitblit v1.9.3