From 295eb3cc87aaa5176d64a4ef985cdad0bfefae9a Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Mon, 31 Mar 2025 08:35:00 +0800
Subject: [PATCH] 增加单个机巢页面

---
 src/views/Home/Home.vue |  110 ++++++++++++-------------------------------------------
 1 files changed, 24 insertions(+), 86 deletions(-)

diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index c7e3e76..5a2c5a7 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -1,99 +1,37 @@
 <template>
-  <HomeLeft></HomeLeft>
-  <!-- <div>中间搜索</div> -->
-  <HomeRight></HomeRight>
-  <SearchBox />
+  <template v-if="!singleUavHome?.id">
+    <SearchBox />
+    <HomeLeft />
+    <HomeRight />
+  </template>
+  <template v-else>
+    <SignMachineNest />
+  </template>
+  <RSide />
+  <Footer />
 </template>
 
 <script setup>
 import HomeRight from './components/HomeRight/HomeRight.vue';
 import HomeLeft from '@/views/Home/components/HomeLeft/HomeLeft.vue';
-import { getAggregation } from '@/views/Home/aggregation';
 import SearchBox from '@/views/Home/SearchBox.vue';
-import jiangxi from '@/assets/geojson/jiangxi.json';
-import nanchang from '@/assets/geojson/nanchang.json';
-import jiangxishi from '@/assets/geojson/jiangxishi.json';
-import zg from '@/assets/geojson/zg.json';
-import * as Cesium from 'cesium';
+import SignMachineNest from '@/views/SignMachineNest/SignMachineNest.vue';
+import { useStore } from 'vuex';
+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();
+const { _init,viewerDestory } = cesiumOperation();
 
-const list = [
-  { name: '县', value: [0,48651], gJson: null },
-  { name: '市', value: [48651,314863], gJson: jiangxishi },
-  { name: '省', value: [314863,1169651], gJson: jiangxi },
-  { name: '国', value: [1169651,37962800], gJson: zg },
-];
-let viewer = null;
-const active = ref('');
-const init = () => {
-  determineScaling();
-  viewer.camera.moveEnd.addEventListener(() => {
-    determineScaling();
-  });
-};
+const singleUavHome = computed(() => store.state.home.singleUavHome);
 
-const determineScaling = () => {
-  let height = viewer.camera.positionCartographic.height;
-  console.log('缩放结束,高度为:', height);
-  // 根据高度展示对应的 gJson
-  for (let item of list) {
-    // if (height < item.value) {
-    if (height > item.value[0] && height <= item.value[1]) {
-      if (active.value !== item.name) {
-        viewer.dataSources.removeAll(true);
-        viewer.entities.removeAll();
-        active.value = item.name;
-        if (item.gJson) {
-          aggregation(item);
-        }
-      }
-      break;
-    }
-  }
-};
+onBeforeUnmount(()=>{
+  store.commit('setSingleUavHome',null);
+  viewerDestory()
+})
 
-const aggregation = item => {
-  const featuresList = item.gJson.features.map(item => ({
-    name: item.properties.name,
-    position: item.properties.center,
-  }));
-  // 遍历特征并添加实体
-  featuresList.forEach(feature => {
-    if (!feature.position) return;
-    const position = Cesium.Cartesian3.fromDegrees(feature.position[0], feature.position[1]);
-    viewer.entities.add({
-      position: position,
-      label: {
-        // 随机整数
-        text: feature.name + Math.floor(Math.random() * 100),
-        font: '14pt monospace',
-        fillColor: Cesium.Color.WHITE,
-        outlineColor: Cesium.Color.BLACK,
-        outlineWidth: 2,
-        style: Cesium.LabelStyle.FILL_AND_OUTLINE,
-        verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
-        pixelOffset: new Cesium.Cartesian2(0, -9),
-      },
-    });
-  });
-  // 加载新的 GeoJSON 数据
-  Cesium.GeoJsonDataSource.load(item.gJson).then(dataSource => {
-    viewer.dataSources.add(dataSource);
-    item.dataSource = dataSource; // 保存数据源以便后续删除
-    // 获取数据源中的实体
-    const entities = dataSource.entities.values;
-    entities.forEach(entity => {
-      entity.polygon.material = new Cesium.ColorMaterialProperty(
-        Cesium.Color.YELLOW.withAlpha(0) // 透明填充
-      );
-      entity.polygon.outline = true; // 显示边框
-      entity.polygon.outlineColor = Cesium.Color.YELLOW; // 黑色边框
-    });
-  });
-};
 onMounted(() => {
-  nextTick(() => {
-    viewer = window.$viewer;
-    init();
-  });
+  _init('cesium');
 });
 </script>

--
Gitblit v1.9.3