From df7876b99d8e8d359909756d42e909dcc215fa38 Mon Sep 17 00:00:00 2001
From: guonan <guonan201020@163.com>
Date: 星期一, 21 四月 2025 17:22:49 +0800
Subject: [PATCH] 修改图层显示

---
 src/components/tools/LayerTree.vue |  131 +++++++++++++++++++++++++++++--------------
 1 files changed, 89 insertions(+), 42 deletions(-)

diff --git a/src/components/tools/LayerTree.vue b/src/components/tools/LayerTree.vue
index fa787b1..e898e6d 100644
--- a/src/components/tools/LayerTree.vue
+++ b/src/components/tools/LayerTree.vue
@@ -13,13 +13,18 @@
 </template>
 
 <script setup>
-import { ref, onMounted, watch, nextTick,onUnmounted } from "vue";
+import { ref, onMounted, watch, nextTick, onUnmounted } from "vue";
 import { createPoint, removeEntities, addTileset } from "@/utils/map";
 import { deviceDictList, getDictName } from "@/constant/dict.js";
 import { useRoute } from "vue-router";
 import { loadAreaPolygon, clearAreaPolygon } from "@/utils/area";
 import { checkedKeys } from "@/store/index";
-import { getDuanMainData, getDevicetListData, getDistrictListData } from "@/api/index.js";
+import {
+  getDuanMainData,
+  getDevicetListData,
+  getDistrictListData,
+} from "@/api/index.js";
+import { init } from "echarts";
 
 const route = useRoute();
 
@@ -57,42 +62,85 @@
 /**
  * 鍒濆鍖栧湴鍥�
  */
-function initMap() {
-  // 鍒濆鍖栧湴褰㈡暟鎹�
-  let TerrainLayer = earthCtrl.factory.createTerrainLayer({
-    sourceType: "ctb",
-    url: "http://106.120.22.26:9103/gisserver/ctsserver/sungugoudem",
-  });
-  treeMap.set("鍦板舰鏁版嵁", TerrainLayer);
-    // 鍒濆鍖栨ā鍨嬫暟鎹�
-  // let modelPromise = addTileset(
-  //   "http://106.120.22.26:9103/gisserver/c3dserver/sunhugou3d/tileset.json"
-  // );
-  // modelPromise.then((model) => {
-  //   treeMap.set("妯″瀷鏁版嵁", model);
-  // });
+// function initMap() {
+//   // 鍒濆鍖栧湴褰㈡暟鎹�
+//   let TerrainLayer = earthCtrl.factory.createTerrainLayer({
+//     sourceType: "ctb",
+//     url: "http://106.120.22.26:9103/gisserver/ctsserver/sungugoudem",
+//   });
+//   treeMap.set("鍦板舰鏁版嵁", TerrainLayer);
+//   console.log(TerrainLayer,'aaaa')
+//   // 鍒濆鍖栨ā鍨嬫暟鎹�
+//   // let modelPromise = addTileset(
+//   //   "http://106.120.22.26:9103/gisserver/c3dserver/sunhugou3d/tileset.json"
+//   // );
+//   // modelPromise.then((model) => {
+//   //   treeMap.set("妯″瀷鏁版嵁", model);
+//   // });
 
-  // 鍒濆鍖栧奖鍍忔暟鎹�
-  // let ImageryLayer = earthCtrl.factory.createImageryLayer({
-  //   sourceType: "tms",
-  //   url: "http://106.120.22.26:9103/gisserver/tmsserver/sunhugoudom",
-  // });
-  // treeMap.set("褰卞儚鏁版嵁", ImageryLayer);
+//   // 鍒濆鍖栧奖鍍忔暟鎹�
+//   // let ImageryLayer = earthCtrl.factory.createImageryLayer({
+//   //   sourceType: "tms",
+//   //   url: "http://106.120.22.26:9103/gisserver/tmsserver/sunhugoudom",
+//   // });
+//   // treeMap.set("褰卞儚鏁版嵁", ImageryLayer);
+// }
+
+
+// 鍦板舰鏁版嵁
+let TerrainLayer = null;
+async function initMap() {
+  try {
+    // 鍒濆鍖栧湴褰㈡暟鎹紙浣跨敤await绛夊緟Promise瑙f瀽锛�
+    TerrainLayer = await earthCtrl.factory.createTerrainLayer({
+      sourceType: "ctb",
+      url: "http://106.120.22.26:9103/gisserver/ctsserver/sungugoudem",
+    });
+
+    treeMap.set("鍦板舰鏁版嵁", TerrainLayer);
+  } catch (error) {
+    console.error("鍒濆鍖栧け璐�:", error);
+  }
 }
 
 /**
  * 澶勭悊澶嶉�夋鐘舵�佸彉鍖�
  */
+// 搴旂敤鍒濆鍖栨椂棰勫厛鍔犺浇
+// 褰卞儚鏁版嵁鍒濆
+let ImageryLayer = null;
+async function initImageryLayer() {
+  ImageryLayer = await earthCtrl.factory.createImageryLayer({
+    sourceType: "tms",
+    url: "http://106.120.22.26:9103/gisserver/tmsserver/sunhugoudom",
+  });
+}
+
 function handleCheckChange(data, checked, indeterminate) {
   const label = data.label;
+  if (label === "鍦板舰鏁版嵁") {
+    if (checked) {
+      initMap();
+      treeMap.set("鍦板舰鏁版嵁", TerrainLayer);
+      toggleLayerVisible("鍦板舰鏁版嵁", true); // 鏄剧ず褰卞儚鏁版嵁
+    } else {
+      const layer = treeMap.get("鍦板舰鏁版嵁");
+      if (layer) {
+        toggleLayerVisible("鍦板舰鏁版嵁", false); // 闅愯棌褰卞儚鏁版嵁
+        TerrainLayer.removeFromMap(); // 浠� Map 涓Щ闄�
+        console.log("褰卞儚鏁版嵁宸茬Щ闄�");
+      }
+    }
+  }
   if (label === "褰卞儚鏁版嵁") {
     if (checked) {
-      // 鍔犺浇褰卞儚鏁版嵁
-      console.log("寮�濮嬪姞杞藉奖鍍忔暟鎹�...");
-      let ImageryLayer = earthCtrl.factory.createImageryLayer({
-        sourceType: "tms",
-        url: "http://106.120.22.26:9103/gisserver/tmsserver/sunhugoudom",
-      });
+      initImageryLayer();
+      // // 鍔犺浇褰卞儚鏁版嵁
+      // console.log("寮�濮嬪姞杞藉奖鍍忔暟鎹�...");
+      // ImageryLayer = earthCtrl.factory.createImageryLayer({
+      //   sourceType: "tms",
+      //   url: "http://106.120.22.26:9103/gisserver/tmsserver/sunhugoudom",
+      // });
       treeMap.set("褰卞儚鏁版嵁", ImageryLayer);
       toggleLayerVisible("褰卞儚鏁版嵁", true); // 鏄剧ず褰卞儚鏁版嵁
     } else {
@@ -114,13 +162,15 @@
         "http://106.120.22.26:9103/gisserver/c3dserver/sunhugou3d/tileset.json"
       );
 
-      modelPromise.then((model) => {
-        console.log("妯″瀷鏁版嵁鍔犺浇瀹屾垚");
-        treeMap.set("妯″瀷鏁版嵁", model); // 灏嗘ā鍨嬫暟鎹瓨鍌ㄥ埌 treeMap
-        toggleLayerVisible("妯″瀷鏁版嵁", true); // 鏄剧ず妯″瀷鏁版嵁
-      }).catch((error) => {
-        console.error("妯″瀷鏁版嵁鍔犺浇澶辫触:", error);
-      });
+      modelPromise
+        .then((model) => {
+          console.log("妯″瀷鏁版嵁鍔犺浇瀹屾垚");
+          treeMap.set("妯″瀷鏁版嵁", model); // 灏嗘ā鍨嬫暟鎹瓨鍌ㄥ埌 treeMap
+          toggleLayerVisible("妯″瀷鏁版嵁", true); // 鏄剧ず妯″瀷鏁版嵁
+        })
+        .catch((error) => {
+          console.error("妯″瀷鏁版嵁鍔犺浇澶辫触:", error);
+        });
     } else {
       // 闅愯棌妯″瀷鏁版嵁
       toggleLayerVisible("妯″瀷鏁版嵁", false);
@@ -162,7 +212,7 @@
       console.log(`Setting entity show to:`, checked);
       entity.show = checked;
     });
-  } else if (entityList && typeof entityList.show !== 'undefined') {
+  } else if (entityList && typeof entityList.show !== "undefined") {
     console.log(`Setting layer show to:`, checked);
     entityList.show = checked;
   } else {
@@ -178,7 +228,7 @@
  */
 const getDevicetList = async () => {
   await getDevicetListData().then((res) => {
-    console.log(res.data, 'devicetList.value2');
+    console.log(res.data, "devicetList.value2");
     devicetList.value = res.data;
   });
 };
@@ -312,10 +362,7 @@
       toggleLayerVisible("瀛欒儭娌熼殣鎮g偣", false);
       toggleLayerVisible("瀛欒儭娌熸柇闈�", false);
     } else if (path == "/mnfz") {
-      treeRef.value.setCheckedKeys(
-        defaultKeys.concat("瀛欒儭娌熸柇闈�"),
-        false
-      );
+      treeRef.value.setCheckedKeys(defaultKeys.concat("瀛欒儭娌熸柇闈�"), false);
       toggleLayerVisible("瀛欒儭娌熸柇闈�", false);
       toggleLayerVisible("瀛欒儭娌熼殣鎮g偣", false);
       toggleLayerVisible("缁煎悎鐩戞祴璁惧淇℃伅", false);
@@ -348,4 +395,4 @@
   height: 200px;
   z-index: 99;
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3