From 9eda86f1b33b9d2a95eae89eb7bdb3e99ad745d5 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 03 Dec 2024 12:58:25 +0800
Subject: [PATCH] 首页内存泄漏优化
---
src/pages/map/components/scomponents/layersControl.vue | 187 +++++++++++++++++++++++++++-------------------
1 files changed, 109 insertions(+), 78 deletions(-)
diff --git a/src/pages/map/components/scomponents/layersControl.vue b/src/pages/map/components/scomponents/layersControl.vue
index e455183..29cec18 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-02 19:46:13
+ * @LastEditTime: 2024-12-02 22:20:32
* @FilePath: \bigScreen\src\pages\map\components\scomponents\layersControl.vue
* @Description:
*
@@ -79,10 +79,12 @@
import EventBus from 'utils/bus'
import { usePointStore } from 'store/usepoint'
const pointStore = usePointStore()
+import { useRouter } from 'vue-router'
+const router = useRouter()
const { VITE_APP_BASE } = import.meta.env
// , '7',
-let indexPoint = ref(['1', '5'])
+let indexPoint = ref(['1', '5', '7'])
const treeRef = ref(null)
@@ -167,14 +169,13 @@
const { attrParams } = e.overlay
// 删除
destroy()
- if (!attrParams.imageUrl) {
- return
- }
+ // if (!attrParams.imageUrl) {
+ // return
+ // }
addPupoLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
window.$viewer.addLayer(addPupoLayers[attrParams.name])
let iconEl = `<div class="marsBlueGradientPnl">
<div>${attrParams.fullName}</div>
- <img src="${attrParams.imageUrl}" />
</div>`
let divIcon = new DC.DivIcon(
new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
@@ -236,16 +237,6 @@
children: [
// 给水管网、污水管网、燃气管网、雨水管网
{
- id: '3-3-1',
- label: '给水管网',
- type: 'layer',
- subType: 'geojsonPipe',
- layerName: 'gsgw',
- source: gsgw,
- color: DC.Color.BLUE.withAlpha(0.9),
- height: 65,
- },
- {
id: '3-3-2',
label: '污水管网',
type: 'layer',
@@ -253,17 +244,7 @@
layerName: 'wsgw',
source: wsgw,
color: DC.Color.DARKBLUE.withAlpha(0.9),
- height: 68,
- },
- {
- id: '3-3-3',
- label: '燃气管网',
- type: 'layer',
- subType: 'geojsonPipe',
- layerName: 'rqgw',
- source: rqgw,
- color: DC.Color.RED.withAlpha(0.9),
- height: 71,
+ height: 60.2,
},
{
id: '3-3-4',
@@ -273,7 +254,27 @@
layerName: 'ysgw',
source: ysgw,
color: DC.Color.CYAN.withAlpha(0.9),
- height: 75,
+ height: 60,
+ },
+ {
+ id: '3-3-1',
+ label: '给水管网',
+ type: 'layer',
+ subType: 'geojsonPipe',
+ layerName: 'gsgw',
+ source: gsgw,
+ color: DC.Color.BLUE.withAlpha(0.9),
+ height: 60.4,
+ },
+ {
+ id: '3-3-3',
+ label: '燃气管网',
+ type: 'layer',
+ subType: 'geojsonPipe',
+ layerName: 'rqgw',
+ source: rqgw,
+ color: DC.Color.RED.withAlpha(0.9),
+ height: 60.6,
},
]
},
@@ -413,22 +414,22 @@
showPanel: false,
layerName: 'gouqu'
},
- {
- id: '3-9',
- label: '废水处理站',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 9,
- size: 1000
- // name: '吉水县绿源污水处理厂',
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/wsclc.png',
- className: 'xfs-box',
- showPanel: false,
- layerName: 'fsclz'
- },
+ // {
+ // id: '3-9',
+ // label: '废水处理站',
+ // type: 'layer',
+ // subType: 'labelPoint',
+ // method: getList,
+ // params: {
+ // type: 9,
+ // size: 1000
+ // // name: '吉水县绿源污水处理厂',
+ // },
+ // backgroundIcon: VITE_APP_BASE + 'img/mapicon/wsclc.png',
+ // className: 'xfs-box',
+ // showPanel: false,
+ // layerName: 'fsclz'
+ // },
{
id: '3-10',
label: '排水口',
@@ -444,21 +445,21 @@
showPanel: false,
layerName: 'psk'
},
- {
- id: '3-11',
- label: '污水池',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 11,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/wsc.png',
- className: 'xfs-box',
- showPanel: false,
- layerName: 'wsc'
- }
+ // {
+ // id: '3-11',
+ // label: '污水池',
+ // type: 'layer',
+ // subType: 'labelPoint',
+ // method: getList,
+ // params: {
+ // type: 11,
+ // size: 1000
+ // },
+ // backgroundIcon: VITE_APP_BASE + 'img/mapicon/wsc.png',
+ // className: 'xfs-box',
+ // showPanel: false,
+ // layerName: 'wsc'
+ // }
]
},
@@ -478,7 +479,7 @@
},
showParams: 'category',
className: 'fxy-ordinary',
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy.png',
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-yb.png',
showPanel: false,
layerName: 'fxyOrdinary',
incident: (e) => {
@@ -515,7 +516,7 @@
},
showParams: 'category',
className: 'fxy-larger',
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy.png',
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-jd.png',
showPanel: false,
layerName: 'fxyLarger',
incident: (e) => {
@@ -683,7 +684,7 @@
// })
addTileLayers[item.layerName] = []
item.urlData.forEach((m, ind) => {
- let tile = new DC.Tileset(m.url, {
+ addTileLayers[item.layerName][ind] = new DC.Tileset(m.url, {
maximumMemoryUsage: 1024,
maximumScreenSpaceError: 8,
skipLevels: 5,
@@ -692,13 +693,8 @@
progressiveResolutionHeightFraction: 0.5,
baseScreenSpaceError: 1024
})
- tile.setSplitDirection(1)
// tile.setHeight(-420)
- // tile.setSplitDirection(-1)
- window.$viewer.sceneSplit.addTileset(tile)
- tileLayers.addOverlay(tile)
- window.$viewer.sceneSplit.enable = false
- addTileLayers[item.layerName][ind] = tile
+ tileLayers.addOverlay(addTileLayers[item.layerName][ind])
})
} else {
addTileLayers[item.layerName].forEach(m => m.show = true)
@@ -792,7 +788,7 @@
item.source.features.forEach(i => {
let polylineVolume = new DC.PolylineVolume(
i.geometry.coordinates.map(d => [d[0], d[1], item.height].join(',')).join(';'),
- computeCircle(2)
+ computeCircle(1.6)
)
polylineVolume.setStyle({
@@ -912,14 +908,48 @@
EventBus.on('flyToyqfw', flyToyqfw)
onMounted(() => {
- setTimeout(() => {
- // handleCheckChange(data.filter(i => indexPoint.value.includes(i.id)))
- }, 3000)
+ handleCheckChange(data.filter(i => indexPoint.value.includes(i.id)))
})
// const sharedData = computed(() => pointStore.sharedData);
// watch(sharedData, (newValue) => {
// });
+
+// 关闭所有选中的,除了倾斜,园区分布,空中全景
+const closeAll = () => {
+ EventBus.emit('restHandleDelChange', `2`)
+ EventBus.emit('restHandleDelChange', `3`)
+ EventBus.emit('restHandleDelChange', `3-1`)
+ EventBus.emit('restHandleDelChange', `3-2`)
+ EventBus.emit('restHandleDelChange', `3-3`)
+ EventBus.emit('restHandleDelChange', `3-3-1`)
+ EventBus.emit('restHandleDelChange', `3-3-2`)
+ EventBus.emit('restHandleDelChange', `3-3-3`)
+ EventBus.emit('restHandleDelChange', `3-3-4`)
+ EventBus.emit('restHandleDelChange', `3-4`)
+ EventBus.emit('restHandleDelChange', `3-5`)
+ EventBus.emit('restHandleDelChange', `3-6`)
+ EventBus.emit('restHandleDelChange', `3-7`)
+ EventBus.emit('restHandleDelChange', `3-8`)
+ EventBus.emit('restHandleDelChange', `3-9`)
+ EventBus.emit('restHandleDelChange', `4`)
+ EventBus.emit('restHandleDelChange', `4-1`)
+ EventBus.emit('restHandleDelChange', `4-2`)
+ EventBus.emit('restHandleDelChange', `8`)
+ destroy()
+}
+
+// const sharedData = computed(() => pointStore.sharedData);
+// watch(sharedData, (newValue) => {
+// });
+// 监听当前路由路径的变化
+watch(() => router.currentRoute.value.path,
+ (newPath, oldPath) => {
+ console.log(`Current path changed from ${oldPath} to ${newPath}`)
+ closeAll()
+ },
+ { immediate: true }
+)
// 销毁
function destroy () {
@@ -933,15 +963,10 @@
}
onUnmounted(() => {
- if (tileLayers) {
- tileLayers.clear()
- window.$viewer && window.$viewer.removeLayer(tileLayers)
- tileLayers = null
- }
-
let arr = Object.keys(addTileLayers)
arr.forEach(i => {
if (i == 'hgyq') {
+ tileLayers.removeOverlay(addTileLayers[i])
addTileLayers[i] = null
delete addTileLayers[i]
} else {
@@ -951,6 +976,12 @@
}
})
addTileLayers = null
+
+ if (tileLayers) {
+ tileLayers.remove()
+ window.$viewer && window.$viewer.removeLayer(tileLayers)
+ tileLayers = null
+ }
// 弹窗销毁
destroy()
addPupoLayers = null
--
Gitblit v1.9.3