From 3dddb1b4c87400c6448677a2ff5e6cd1f9be5ecd Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Sun, 30 Mar 2025 20:18:15 +0800
Subject: [PATCH] fix: 移除监听事件bug
---
src/views/Home/useAggregation.js | 6 +++---
src/views/Home/RSide.vue | 8 ++++----
src/views/Home/Footer.vue | 6 +++++-
src/views/Home/Home.vue | 4 ++--
4 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/src/layout/Footer.vue b/src/views/Home/Footer.vue
similarity index 92%
rename from src/layout/Footer.vue
rename to src/views/Home/Footer.vue
index 53b90f6..9eefc90 100644
--- a/src/layout/Footer.vue
+++ b/src/views/Home/Footer.vue
@@ -29,13 +29,17 @@
{name:'event5',img:img5,activeImg:activeImg5,active:false,className:'orthophoto'},
])
+// 机巢聚合
const {init,removeAll} = useAggregation()
const imgClick = (row) => {
const find = list.value.find(item => item.active)
if (find.name === row.name) return
+ const isFromEvent1 = find.name === 'event1';
+ const isToEvent1 = row.name === 'event1';
+ if (isFromEvent1 && !isToEvent1) removeAll();
+ else if (!isFromEvent1 && isToEvent1) init();
list.value = list.value.map(item => ({...item,active: item.name === row.name}));
- row.name === 'event1' ? init() :removeAll()
}
// 销毁前钩子
diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index dae0c93..5a2c5a7 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -17,8 +17,8 @@
import SearchBox from '@/views/Home/SearchBox.vue';
import SignMachineNest from '@/views/SignMachineNest/SignMachineNest.vue';
import { useStore } from 'vuex';
-import Footer from '@/layout/Footer.vue';
-import RSide from '@/layout/RSide.vue';
+import Footer from '@/views/Home/Footer.vue';
+import RSide from '@/views/Home/RSide.vue';
import { onMounted } from 'vue';
import cesiumOperation from '@/utils/cesium-tsa';
const store = useStore();
diff --git a/src/layout/RSide.vue b/src/views/Home/RSide.vue
similarity index 82%
rename from src/layout/RSide.vue
rename to src/views/Home/RSide.vue
index c32053b..ffc2da6 100644
--- a/src/layout/RSide.vue
+++ b/src/views/Home/RSide.vue
@@ -18,12 +18,12 @@
</el-popover>
- <img class="chat-bottom" src="@/assets/images/chat-bottom.png" alt="">
+ <img class="chat-bottom" src="../../assets/images/chat-bottom.png" alt="">
</div>
<div class="r-side">
- <img class="positioning" src="@/assets/images/self-positioning.png" alt="" @mouseenter="enterHover(0)" @mouseleave="logIndex=3">
- <img class="measuring-scale" src="@/assets/images/measuring-scale.png" alt="" @mouseenter="enterHover(1)" @mouseleave="logIndex=3">
- <img class="layer" src="@/assets/images/layer.png" alt="" @mouseenter="enterHover(2)" @mouseleave="logIndex=3">
+ <img class="positioning" src="../../assets/images/self-positioning.png" alt="" @mouseenter="enterHover(0)" @mouseleave="logIndex=3">
+ <img class="measuring-scale" src="../../assets/images/measuring-scale.png" alt="" @mouseenter="enterHover(1)" @mouseleave="logIndex=3">
+ <img class="layer" src="../../assets/images/layer.png" alt="" @mouseenter="enterHover(2)" @mouseleave="logIndex=3">
</div>
<div v-if="logIndex===0" class="r-side-positioning">切换地图模式</div>
<div v-if="logIndex===1" class="r-side-measuring">量尺</div>
diff --git a/src/views/Home/useAggregation.js b/src/views/Home/useAggregation.js
index d9e9f89..b724256 100644
--- a/src/views/Home/useAggregation.js
+++ b/src/views/Home/useAggregation.js
@@ -23,9 +23,7 @@
let positionC3 = null;
const listenerHeight = () => {
determineScaling();
- viewer.camera.moveEnd.addEventListener(() => {
- determineScaling();
- });
+ viewer.camera.moveEnd.addEventListener(determineScaling);
};
// 确定缩放比例
@@ -179,9 +177,11 @@
}
};
+ // 移除所有监听事件,变量置空
const removeAll = () => {
removeEntities();
removeLabel();
+ viewer.camera.moveEnd.removeEventListener(determineScaling);
handler?.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
handler?.destroy();
viewer = null;
--
Gitblit v1.9.3