From cf7752d995e09d48eca9a1ca5634a9e71ae46553 Mon Sep 17 00:00:00 2001 From: wangjuncheng <1> Date: 星期二, 22 七月 2025 16:19:06 +0800 Subject: [PATCH] 透明度0 修改模型数据路径 --- src/components/tools/LayerTree.vue | 1396 +++++++++++++++------------------------------------------ 1 files changed, 379 insertions(+), 1,017 deletions(-) diff --git a/src/components/tools/LayerTree.vue b/src/components/tools/LayerTree.vue index 2b8c896..c217cd7 100644 --- a/src/components/tools/LayerTree.vue +++ b/src/components/tools/LayerTree.vue @@ -1,19 +1,44 @@ <template> <div class="layer-tree"> - <el-tree ref="treeRef" style="max-width: 600px" show-checkbox node-key="label" - :default-checked-keys="defaultSelectedKeys" @check-change="handleCheckChange" :data="treeData" /> + <el-tree + ref="treeRef" + style="max-width: 600px" + show-checkbox + node-key="label" + :default-checked-keys="defaultSelectedKeys" + @check-change="handleCheckChange" + :data="treeData" + /> </div> </template> <script setup> -import { ref, onMounted, onBeforeUnmount, watch, onUnmounted } from "vue"; -import { createPoint, removeEntities, addTileset } from "@/utils/map"; +import { ref, onMounted, watch, nextTick, onUnmounted, watchEffect } from "vue"; +import { + createPoint, + removeEntities, + addTileset, + clearAllPoints, +} from "@/utils/map"; import { deviceDictList, getDictName } from "@/constant/dict.js"; import { useRoute } from "vue-router"; -import { loadAreaPolygon, clearAreaPolygon } from "@/utils/area"; +import { + loadAreaPolygon, + convertToGeoJson, + clearAreaPolygon, +} from "@/utils/area"; import { checkedKeys } from "@/store/index"; import { getDuanMainData } from "@/api/index.js"; +import { useSimStore } from "@/store/simulation"; +import { getSafePoint } from "@/api/hpApi"; + +const simStore = useSimStore(); const route = useRoute(); + +/** + * 鍥惧眰鏍戦厤缃暟鎹� + * 鍖呭惈涓夌淮鏈嶅姟鍜屽浘灞傛暟鎹袱澶у垎绫� + */ const treeData = ref([ { label: "涓夌淮鏈嶅姟", @@ -26,1072 +51,409 @@ { label: "鍥惧眰鏁版嵁", children: [ - { - label: "鍖椾含甯傞殣鎮g偣", - }, - { - label: "瀛欒儭娌熼殣鎮g偣", - }, - // { - // label: "娉ョ煶娴侀殣鎮g偣闈㈡暟鎹�", - // }, - { - label: "缁煎悎鐩戞祴璁惧淇℃伅", - }, - { - label: "瀛欒儭娌熸柇闈�", - }, - { - label: "閬块櫓鐐�", - }, + { label: "鍖椾含甯傞殣鎮g偣" }, + { label: "瀛欒儭娌熼殣鎮g偣" }, + { label: "缁煎悎鐩戞祴璁惧淇℃伅" }, + { label: "瀛欒儭娌熸柇闈�" }, + { label: "閬块櫓鍦烘墍" }, ], }, ]); + +// 榛樿閫変腑鐨勮妭鐐癸紙鍦板舰鏁版嵁榛樿寮�鍚級 +const defaultSelectedKeys = ref(["鍦板舰鏁版嵁"]); + +// Tree 瀹炰緥寮曠敤 const treeRef = ref(null); + +// 瀛樺偍鍥惧眰瀹炰綋鐨� Map锛岀敤浜庣鐞嗘墍鏈夊浘灞� const treeMap = new Map(); -const defaultSelectedKeys = ref(["妯″瀷鏁版嵁", "褰卞儚鏁版嵁", "鍦板舰鏁版嵁"]); -function handleCheckChange(data, checked, indeterminate) { + +// 鍦板舰鏁版嵁瀹炰緥 +let TerrainLayer = null; +// 褰卞儚鏁版嵁瀹炰緥 +let ImageryLayer = null; + +/** + * 鍒濆鍖栧湴褰㈡暟鎹浘灞� + */ +async function initTerrainLayer() { + try { + TerrainLayer = await earthCtrl.factory.createTerrainLayer({ + sourceType: "ctb", + url: "http://106.120.22.26:9103/gisserver/ctsserver/sunhugoudem", + requestVertexNormals: true, + }); + treeMap.set("鍦板舰鏁版嵁", TerrainLayer); + } catch (error) { + console.error("鍦板舰鏁版嵁鍒濆鍖栧け璐�:", error); + } +} + +/** + * 鍒濆鍖栧奖鍍忔暟鎹浘灞� + */ +async function initImageryLayer() { + try { + ImageryLayer = await earthCtrl.factory.createImageryLayer({ + sourceType: "tms", + url: "http://106.120.22.26:9103/gisserver/tmsserver/sunhugoudom", + }); + treeMap.set("褰卞儚鏁版嵁", ImageryLayer); + } catch (error) { + console.error("褰卞儚鏁版嵁鍒濆鍖栧け璐�:", error); + } +} + +/** + * 澶勭悊鏍戣妭鐐瑰嬀閫夊彉鍖� + * @param {Object} data - 鑺傜偣鏁版嵁 + * @param {Boolean} checked - 鏄惁閫変腑 + * @param {Boolean} indeterminate - 涓嶇‘瀹氱姸鎬� + */ +function handleCheckChange(data, checked) { const label = data.label; - const list = treeMap.get(label); - if (list) { - toggleLayerVisible(label, checked); + + // 鍦板舰鏁版嵁澶勭悊 + if (label === "鍦板舰鏁版嵁") { + handleTerrainLayer(checked); return; } - switch (label) { - case "妯″瀷鏁版嵁": - list.show = checked; - break; - case "鍖椾含甯傞殣鎮g偣": - console.log("鍖椾含甯傞殣鎮g偣", checked, indeterminate); - break; - case "瀛欒儭娌熼殣鎮g偣": - console.log("瀛欒儭娌熼殣鎮g偣", checked, indeterminate); - break; - case "娉ョ煶娴侀殣鎮g偣闈㈡暟鎹�": - console.log("娉ョ煶娴侀殣鎮g偣闈㈡暟鎹�", checked, indeterminate); - break; - case "缁煎悎鐩戞祴璁惧淇℃伅": - console.log("缁煎悎鐩戞祴璁惧淇℃伅", checked, indeterminate); - break; - case "瀛欒儭娌熸柇闈�": - console.log("瀛欒儭娌熸柇闈�", checked, indeterminate); - break; - case "閬块櫓鐐�": - addTetrahedron(); - break; + + // 褰卞儚鏁版嵁澶勭悊 + if (label === "褰卞儚鏁版嵁") { + handleImageryLayer(checked); + return; + } + + // 妯″瀷鏁版嵁澶勭悊 + if (label === "妯″瀷鏁版嵁") { + handleModelLayer(checked); + return; + } + + // 璁惧淇℃伅澶勭悊 + if (label === "缁煎悎鐩戞祴璁惧淇℃伅") { + simStore.DeviceShowSwitch = checked; + return; + } + + // 闅愭偅鐐瑰鐞� + if (label === "瀛欒儭娌熼殣鎮g偣") { + simStore.DangerShowSwitch = checked; + return; + } + + // 鍏朵粬鍥惧眰鐨勫鐞� + const layer = treeMap.get(label); + if (layer) { + toggleLayerVisible(label, checked); } } -function initMap() { - // 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", - // }) - // let TerrainLayer = earthCtrl.factory.createTerrainLayer({ - // sourceType: "ctb", - // // url: "http://106.120.22.26:9103/gisserver/ctsserver/llmbdem", - // url: "http://106.120.22.26:9103/gisserver/ctsserver/sunhugoudem", - // }) - let TerrainLayer = earthCtrl.factory.createTerrainLayer({ - sourceType: "ctb", - url: "http://106.120.22.26:9103/gisserver/ctsserver/sungugoudem", - }); - - // let TerrainLayer = earthCtrl.factory.createTerrainLayer({ - // sourceType: "ctb", - // url: "https://tiles1.geovisearth.com/base/v1/terrain?token=486dac3bec56d7d7c2a581c150be2bd937462f1e8f3bc9c78b5658b396122405", - // requestVertexNormals: true, - // }); - // treeMap.set("褰卞儚鏁版嵁", ImageryLayer) - treeMap.set("鍦板舰鏁版嵁", TerrainLayer) +/** + * 澶勭悊鍦板舰鍥惧眰 + */ +function handleTerrainLayer(checked) { + if (checked) { + initTerrainLayer(); + toggleLayerVisible("鍦板舰鏁版嵁", true); + } else { + const layer = treeMap.get("鍦板舰鏁版嵁"); + if (layer) { + toggleLayerVisible("鍦板舰鏁版嵁", false); + layer.removeFromMap(); + treeMap.delete("鍦板舰鏁版嵁"); + } + } } -const devicetList = ref([ - { - deviceCode: "303A9016", - deviceId: "1821067878870257666", - deviceName: "瀛欒儭娌�(澧掓儏)", - dictDeviceType: "1437295822", - latitude: 40.56476666, - longitude: 116.5955361, - }, - { - deviceCode: "01303A9016", - deviceId: "1821067850122498049", - deviceName: "瀛欒儭娌�(澧掓儏)", - dictDeviceType: "14372958380", - latitude: 40.56476666, - longitude: 116.5955361, - }, - { - deviceCode: "1101161102180100010063", - deviceId: "1554360510040182786", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熷肮瀹惰タ娌熼洦閲忚0063", - dictDeviceType: "1437295810", - latitude: 40.556589, - longitude: 116.579459, - }, - { - deviceCode: "1101161102180100194030", - deviceId: "1554361328692826114", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸潙涓婂彴瀛愭渤涓滃崡娌熺紪鐮佸櫒4030", - dictDeviceType: "1437295815", - latitude: 40.554272, - longitude: 116.592583, - }, - { - deviceCode: "1101161102180100031041", - deviceId: "1554360448702681089", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸潙涓婂彴瀛愭渤涓滃崡娌熸澹颁华1041", - dictDeviceType: "1437295832", - latitude: 40.553236, - longitude: 116.592304, - }, - { - deviceCode: "1101161102180100022007", - deviceId: "1554360273959587842", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸潙涓婂彴瀛愭渤涓滃崡娌熷惈姘寸巼2007", - dictDeviceType: "1437295822", - latitude: 40.545821, - longitude: 116.586354, - }, - { - deviceCode: "1101161102180100225406", - deviceId: "1554360478494822402", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸潙涓婂彴瀛愭渤涓滃崡娌熸祦閫熶华5406", - dictDeviceType: "1437295821", - latitude: 40.554368, - longitude: 116.592989, - }, - { - deviceCode: "1101161102180100055006", - deviceId: "1554360276627165185", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸潙涓婂彴瀛愭渤涓滃崡娌熸偿浣嶈5006", - dictDeviceType: "1437295811", - latitude: 40.554398, - longitude: 116.592929, - }, - { - deviceCode: "1101161102180100010064", - deviceId: "1554360452670492674", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸潙涓婂彴瀛愭渤涓滃崡娌熼洦閲忚0064", - dictDeviceType: "1437295810", - latitude: 40.545741, - longitude: 116.586304, - }, - { - deviceCode: "1101161102180100183030", - deviceId: "1554360533087883265", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸潙涓婂彴瀛愭渤涓滃崡娌熸憚鍍忓ご3030", - dictDeviceType: "1437295825", - latitude: 40.554272, - longitude: 116.592583, - }, - { - deviceCode: "1101161102180100194031", - deviceId: "1554361328877375489", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸ご鏍戝簳涓嬩笢娌熺紪鐮佸櫒4031", - dictDeviceType: "1437295815", - latitude: 40.554035, - longitude: 116.59786, - }, - { - deviceCode: "1101161102180100055007", - deviceId: "1554360509775941634", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸ご鏍戝簳涓嬩笢娌熸偿浣嶈5007", - dictDeviceType: "1437295811", - latitude: 40.554729, - longitude: 116.598165, - }, - { - deviceCode: "1101161102180100031042", - deviceId: "1554360448916590593", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸ご鏍戝簳涓嬩笢娌熸澹颁华1042", - dictDeviceType: "1437295832", - latitude: 40.549398, - longitude: 116.600387, - }, - { - deviceCode: "1101161102180100225407", - deviceId: "1554360478658400257", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸ご鏍戝簳涓嬩笢娌熸祦閫熶华5407", - dictDeviceType: "1437295821", - latitude: 40.55481, - longitude: 116.598025, - }, - { - deviceCode: "1101161102180100022008", - deviceId: "1554360274165108737", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸ご鏍戝簳涓嬩笢娌熷惈姘寸巼2008", - dictDeviceType: "1437295822", - latitude: 40.544645, - longitude: 116.596511, - }, - { - deviceCode: "1101161102180100183031", - deviceId: "1554360533255655426", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸ご鏍戝簳涓嬩笢娌熸憚鍍忓ご3031", - dictDeviceType: "1437295825", - latitude: 40.554035, - longitude: 116.59786, - }, - { - deviceCode: "1101161102180100010065", - deviceId: "1554360452888596482", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸ご鏍戝簳涓嬩笢娌熼洦閲忚0065", - dictDeviceType: "1437295810", - latitude: 40.543104, - longitude: 116.59585, - }, - { - deviceCode: "1101161102180100031040", - deviceId: "1554360448383913986", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸潙浜庡瑗挎矡娆″0浠�1040", - dictDeviceType: "1437295832", - latitude: 40.563822, - longitude: 116.592648, - }, - { - deviceCode: "1101161102180100010062", - deviceId: "1554360452519497730", - deviceName: "鎬�鏌斿尯鐞夌拑搴欓晣瀛欒儭娌熸潙浜庡瑗挎矡闆ㄩ噺璁�0062", - dictDeviceType: "1437295810", - latitude: 40.558778, - longitude: 116.586892, - }, - { - deviceCode: "1101160042160100010005", - deviceId: "1554360582698110977", - deviceName: "鎬�鏌斿尯闆佹爾闀囧寳婀炬潙鍖楁灄澶х煶闂ㄦ矡闆ㄩ噺璁�0005", - dictDeviceType: "1437295810", - latitude: 40.533623, - longitude: 116.602406, - }, -]); - -function initDevicePoint() { - let list = []; - - devicetList.value.forEach((item) => { - item.type = getDictName(deviceDictList, item.dictDeviceType); - item.name = item.type; - item.id = item.deviceId; - item.className = "device"; - item.showLabel = true; - const entity = createPoint(item); - entity.show = false; - - list.push(entity); - }); - treeMap.set("缁煎悎鐩戞祴璁惧淇℃伅", list); +/** + * 澶勭悊褰卞儚鍥惧眰 + */ +function handleImageryLayer(checked) { + if (checked) { + initImageryLayer(); + toggleLayerVisible("褰卞儚鏁版嵁", true); + } else { + const layer = treeMap.get("褰卞儚鏁版嵁"); + if (layer) { + toggleLayerVisible("褰卞儚鏁版嵁", false); + layer.removeFromMap(); + treeMap.delete("褰卞儚鏁版嵁"); + } + } } -const districtList = ref([ - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116020058", - latitude: 40.56652778, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熸潙灏瑰瑗挎矡灏瑰缓鐕曞灞嬪悗", - longitude: 116.5803889, - monitor: "", - monitorAdvice: "", - name: "灏瑰瑗挎矡灏瑰缓鐕曞灞嬪悗宕╁闅愭偅鐐�", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: "", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡锛岄璀﹁浆绉伙紝绔嬭绀虹墝", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "灏忓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 2, - threatenMoney: 0, - threatenPopulation: "3", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "宕╁", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116020078", - latitude: 40.56497222, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熸潙娌宠タ浜庡嚖鑻卞灞嬪悗", - longitude: 116.5955278, - monitor: "", - monitorAdvice: "", - name: "娌宠タ浜庡嚖鑻卞灞嬪悗宕╁闅愭偅鐐�", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: "", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡锛岄璀﹁浆绉伙紝绔嬭绀虹墝", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "灏忓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 4, - threatenMoney: 0, - threatenPopulation: "6", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "宕╁", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116030041", - latitude: 40.55369444, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熷叕璺�", - longitude: 116.6002778, - monitor: "", - monitorAdvice: "", - name: "鍗楁灏忎笢娌熸偿鐭虫祦闅愭偅鐐�", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: "", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡,绔嬭绀虹墝", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "灏忓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 0, - threatenMoney: 0, - threatenPopulation: "", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "娉ョ煶娴�", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116030015", - latitude: 40.55277778, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熸潙鍗楁鏉戝ぇ绐戞矡", - longitude: 116.5994722, - monitor: "", - monitorAdvice: "", - name: "澶х獞娌熸偿鐭虫祦闅愭偅鐐�", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: "宸茬洃娴嬨�佸凡娌荤悊", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡锛岄璀﹁浆绉伙紝绔嬭绀虹墝", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "涓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 5, - threatenMoney: 0, - threatenPopulation: "11", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "娉ョ煶娴�", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116030076", - latitude: 40.55972222, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熸潙涓滃潕澶т笢娌�", - longitude: 116.5916667, - monitor: "", - monitorAdvice: "", - name: "澶т笢娌熸偿鐭虫祦闅愭偅鐐�", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: "宸叉不鐞�", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡锛岄璀﹁浆绉�", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "灏忓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 1, - threatenMoney: 0, - threatenPopulation: "2", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "娉ョ煶娴�", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116030074", - latitude: 40.56580556, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熸潙灏瑰瑗挎矡", - longitude: 116.59, - monitor: "", - monitorAdvice: "", - name: "灏瑰瑗挎矡娉ョ煶娴侀殣鎮g偣", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: - "宸茬洃娴嬶紱鐏惧浣撳彉鍖栵細4澶勫潯绉墿鍨锛屽爢绉嚦鍧¤剼锛屾柟閲忕害20m鲁銆�", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡锛岄璀﹁浆绉�", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "涓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 7, - threatenMoney: 0, - threatenPopulation: "12", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "娉ョ煶娴�", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116030053", - latitude: 40.57361111, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熸潙鍖楀ぇ鍦拌タ娲煎瓙娌�", - longitude: 116.5897222, - monitor: "", - monitorAdvice: "", - name: "鍖楀ぇ鍦拌タ娲煎瓙娌熸偿鐭虫祦闅愭偅鐐�", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: "娌熷彛姝e鎴垮眿锛岄檷闆ㄦ椂鍑烘按閲忓ぇ锛屽缓璁不鐞嗭紝姹涙湡鍔犲己宸℃煡", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡锛岄璀﹁浆绉伙紝绔嬭绀虹墝", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "涓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 6, - threatenMoney: 0, - threatenPopulation: "10", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "娉ョ煶娴�", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116020102", - latitude: 40.55972222, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熸潙鑼冨搴勭帇绉�鑾插灞嬪悗", - longitude: 116.5922222, - monitor: "", - monitorAdvice: "", - name: "鑼冨搴勭帇绉�鑾插灞嬪悗宕╁闅愭偅鐐�", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: "杈瑰潯杈冮櫋锛岄『鍚戝博灞傦紝鎴垮眿闈犺繎鍧¤剼锛屽缓璁敖蹇不鐞�", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡锛岄璀﹁浆绉伙紝绔嬭绀虹墝", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "灏忓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 1, - threatenMoney: 0, - threatenPopulation: "3", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "宕╁", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116020742", - latitude: 40.57680556, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熸潙涓変憨鍦拌寖蹇犵敯瀹跺眿鍚�", - longitude: 116.5887222, - monitor: "", - monitorAdvice: "", - name: "涓変憨鍦拌寖蹇犵敯瀹跺眿鍚庡穿濉岄殣鎮g偣", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: "", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡锛岄璀﹁浆绉伙紝鏇存崲璀︾ず鐗�", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "涓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 8, - threatenMoney: 0, - threatenPopulation: "23", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "宕╁", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116030040", - latitude: 40.56344444, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熸潙娌宠タ浜庡瑗挎矡", - longitude: 116.5953889, - monitor: "", - monitorAdvice: "", - name: "浜庡瑗挎矡娉ョ煶娴侀殣鎮g偣", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: - "宸茬洃娴嬶紝2018鏉戝凡娌荤悊锛涙矡鍙e爢绉墖鏄庢樉锛屾瀵规埧灞嬶紝寤鸿姹涙湡鍔犲己宸℃煡", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡锛岄璀﹁浆绉�", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "涓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 18, - threatenMoney: 0, - threatenPopulation: "59", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "娉ョ煶娴�", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116030055", - latitude: 40.55283333, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熸潙妞存爲搴曚笅涓滄矡", - longitude: 116.5999444, - monitor: "", - monitorAdvice: "", - name: "妞存爲搴曚笅涓滄矡娉ョ煶娴侀殣鎮g偣", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: "宸叉不鐞嗭細濞佽儊瀵硅薄閲嶅锛氫笌110116030015閲嶅5鎴�11浜�", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡锛岄璀﹁浆绉伙紝绔嬭绀虹墝", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "涓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 5, - threatenMoney: 0, - threatenPopulation: "11", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "娉ョ煶娴�", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, - { - activeStatus: "", - areaCode: "", - areaName: "", - brookLength: 0, - checkId: "", - city: "鍖椾含甯�", - codeProvince: "110116", - county: "鎬�鏌�", - dangerLevel: "", - disasterStatus: "", - drainageArea: "", - elevation: 0, - featureDes: "", - groupMonitor: "鏉庢姊�,瀛欐鍜�,鑼冩弧鐢�,绉﹀缓鏉�,瀛欐姹�,瀛欐浼�", - hasPlan: "", - id: "110116030054", - latitude: 40.56166667, - length: 0, - district: "鐞夌拑搴欓晣瀛欒儭娌熸潙涓婂彴瀛愭渤涓滃崡娌�", - longitude: 116.5997222, - monitor: "", - monitorAdvice: "", - name: "娌充笢鍗楁矡娉ョ煶娴侀殣鎮g偣", - number: - "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612", - preventionDes: "宸茬洃娴�", - preventionLevel: "", - preventionPlan: "瀹氭湡宸℃煡,绔嬭绀虹墝", - preventionUnit: "涔¢晣", - principal: "", - province: "鍖椾含甯�", - qp: "", - reason: "", - responsibleUnit: "", - riskLevel: "", - scale: "灏忓瀷", - stableLevel: "", - status: "", - thickness: 0, - threatenFamily: 0, - threatenMoney: 0, - threatenPopulation: "", - threatenType: "", - town: "鐞夌拑搴欓晣", - trigger: "", - type: "娉ョ煶娴�", - village: "瀛欒儭娌熸潙", - volume: "", - volumePotential: "", - width: 0, - }, -]); - -function initDistrictPoint() { - let list = []; - districtList.value.forEach((item) => { - item.showBillboard = true; - item.className = "district"; - item.type = "娉ョ煶娴�"; - const entity = createPoint(item); - entity.show = false; - list.push(entity); - }); - treeMap.set("瀛欒儭娌熼殣鎮g偣", list); +/** + * 澶勭悊妯″瀷鍥惧眰 + */ +function handleModelLayer(checked) { + if (checked) { + addTileset( + // "http://106.120.22.26:9103/gisserver/c3dserver/sunhugou3d/tileset.json" + "http://192.168.37.61:9004/tile/model/service/Iakp0nhx/tileset.json?labtoken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiItMSxUaHUgQXByIDE4IDE1OjMwOjU3IENTVCAyMDI0In0.j_YKsCRsIQtpgOWfFvMwAP65Rlx9uXyVte_xkE95Vdo" + ) + .then((model) => { + treeMap.set("妯″瀷鏁版嵁", model); + toggleLayerVisible("妯″瀷鏁版嵁", true); + }) + .catch(console.error); + } else { + toggleLayerVisible("妯″瀷鏁版嵁", false); + } } -let divPointList = []; +/** + * 鍒囨崲鍥惧眰鍙鎬� + * @param {String} name - 鍥惧眰鍚嶇О + * @param {Boolean} visible - 鏄惁鍙 + */ +function toggleLayerVisible(name, visible) { + const layer = treeMap.get(name); + if (!layer) { + console.warn(`鍥惧眰 ${name} 涓嶅瓨鍦╜); + return; + } + // 澶勭悊涓嶅悓绫诲瀷鐨勫浘灞� + if (Array.isArray(layer)) { + // 瀹炰綋鏁扮粍 + layer.forEach((entity) => { + entity.show = visible; + if (visible && !viewer.entities.contains(entity)) { + viewer.entities.add(entity); + } + }); + } else if (typeof layer.setVisible === "function") { + // 鑷畾涔夊浘灞傛帴鍙� + layer.setVisible(visible); + } else if (typeof layer.show === "boolean") { + // 鏅�氬彲鏄剧ず瀵硅薄 + layer.show = visible; + } + + viewer.scene.requestRender(); +} + +/** + * 娓呴櫎鍥惧眰瀹炰綋 + * @param {String} layerName - 鍥惧眰鍚嶇О + */ +// 鏆備笖淇濈暀 +// async function clearLayerEntities(layerName) { +// const list = treeMap.get(layerName); +// if (list && Array.isArray(list)) { +// for (const item of list) { +// const entity = await item; +// if (layerName == "缁煎悎鐩戞祴璁惧淇℃伅") { +// removeEntities(entity.deviceId); +// } else if (layerName == "瀛欒儭娌熼殣鎮g偣") { +// removeEntities(entity.hdId); +// } +// } +// } +// treeMap.delete(layerName); +// } + +/** + * 娓呴櫎鍥惧眰瀹炰綋 + * @param {String} layerName - 鍥惧眰鍚嶇О + */ +// 姝ゅ嚱鏁颁紭鍖栦簡鍦ㄦā鎷熶豢鐪熼〉闈紝濡傛灉鐐瑰嚮鐩綍鏍戦�変腑鍙栨秷锛屾偿浣嶈浠嶆樉绀� +async function clearLayerEntities(layerName) { + const isMnfzPage = route.path === "/mnfz"; // 鍒ゆ柇鏄惁涓� /mnfz 椤甸潰 + + const list = treeMap.get(layerName); + if (list && Array.isArray(list)) { + for (const item of list) { + const entity = await item; + + let shouldRemove = true; // 榛樿瑕佸垹闄� + + // 濡傛灉鏄� /mnfz 椤甸潰锛屽苟涓旀槸鈥滄偿浣嶈鈥濓紝鍒欎笉鍒犻櫎 + if (isMnfzPage && entity.type === "娉ヤ綅璁�") { + shouldRemove = false; + } + + if (shouldRemove) { + if (layerName === "缁煎悎鐩戞祴璁惧淇℃伅") { + removeEntities(entity.deviceId); + } else if (layerName === "瀛欒儭娌熼殣鎮g偣") { + removeEntities(entity.hdId); + } + } + } + } + + treeMap.delete(layerName); +} + +watchEffect(async () => { + clearLayerEntities("缁煎悎鐩戞祴璁惧淇℃伅"); + + if (simStore.DeviceShowSwitch) { + // 浣跨敤 Promise.all 绛夊緟鎵�鏈夊紓姝ユ搷浣滃畬鎴� + const deviceListPromises = simStore.devices + .filter((item) => item.deviceName?.includes("瀛欒儭娌�")) + .map(async (item) => { + const entity = viewer.entities.getById(item.deviceId); + item.type = getDictName(deviceDictList, item.dictDeviceType); + item.name = item.deviceName.split("瀛欒儭娌�")[1]; + item.id = item.deviceId; + item.className = "device"; + item.showLabel = true; + await createPoint(item); // 纭繚 createPoint 杩斿洖涓�涓� Promise 鎴栬�呮湰韬氨鏄紓姝ュ嚱鏁� + return item; // 杩斿洖澶勭悊鍚庣殑 item + }); + + // 绛夊緟鎵�鏈夊紓姝ユ搷浣滃畬鎴� + const deviceList = await Promise.all(deviceListPromises); + + if (deviceList.length) { + treeMap.set("缁煎悎鐩戞祴璁惧淇℃伅", deviceList); + } + } +}); + +// 鐩戞帶闅愭偅鐐瑰紑鍏冲彉鍖� +watchEffect(async () => { + clearLayerEntities("瀛欒儭娌熼殣鎮g偣"); + + if (simStore.DangerShowSwitch) { + const filteredPoints = simStore.DangerPoint.filter((item) => + item.position?.includes("瀛欒儭娌�") + ); + + const dangerPointPromises = filteredPoints.map(async (item) => { + const entity = viewer.entities.getById(item.hdId); + item.id = item.hdId; + item.name = item.hdName; + item.latitude = item.lat; + item.longitude = item.lon; + item.showBillboard = true; + item.type = item.disasterType; + item.className = "district"; + await createPoint(item); // 纭繚 createPoint 鏄紓姝ュ嚱鏁� + return item; // 杩斿洖澶勭悊濂界殑 item + }); + + try { + const resolvedPoints = await Promise.all(dangerPointPromises); + + if (resolvedPoints.length) { + treeMap.set("瀛欒儭娌熼殣鎮g偣", resolvedPoints); + } + } catch (error) { + console.error("鍒涘缓闅愭偅鐐规椂鍙戠敓閿欒:", error); + } + } +}); + +/** + * 鍒濆鍖栨柇闈㈢偣鏁版嵁 + */ function initDuanmianPoint() { getDuanMainData().then((res) => { - const duanmianList = res.data; - const list = []; - duanmianList.forEach((item) => { - item.id = item.id + item.alias; - item.name = item.alias; - item.longitude = item.lon; - item.latitude = item.lat; - item.showBillboard = false; - item.className = "district"; - - const entity = createPoint(item); + const list = res.data.map((item) => { + const entity = createPoint({ + id: item.id + item.alias, + name: item.alias, + latitude: item.lat, + longitude: item.lon, + showBillboard: false, + className: "district", + }); entity.show = false; - list.push(entity); - return; - const divPoint = earthCtrl.factory.createDivPoint( - item.alias, - { lon: longitude, lat: latitude }, - { - type: "custom", - offset: ["c", 60], - description: ` - <div class="divPoint-custom"> - <p>${item.alias}</p> - </div> - `, - near: 0, - far: 500000, - } - ); - divPoint.item.show = false; - console.log(divPoint); - - divPointList.push(divPoint.item); + return entity; }); treeMap.set("瀛欒儭娌熸柇闈�", list); }); } -function addTetrahedron(visible) { - const emergencyAreaList = []; - // 杩欓噷鏄坊鍔犻伩闄╃偣搴曞眰闈㈢墖 - loadAreaPolygon("/json/emergency_area.geojson", true).then((entities) => { - emergencyAreaList.push(...entities); - }); - // console.log('polygon', polygon); - - let list = [ - { - name: "灏瑰缓鍗庡", - longitude: 116.593517, - latitude: 40.568391, - altitude: 528.45, - }, - // { - // name: "鑼冩尟姹熷", - // longitude: 116.591059, - // latitude: 40.574068, - // altitude: 528, - // }, - // { - // name: "鍚庡潯", - // longitude: 116.597975, - // latitude: 40.558199, - // altitude: 528, - // }, - ]; - // 杩欓噷鏄坊鍔犻伩闄╃偣瀵屾枃鏈珮浜樉绀� - list.forEach((item) => { - let point = earthCtrl.factory.createRichTextPoint("閬块櫓鐐�", [item.longitude, item.latitude, item.altitude - 10], { - distanceDisplayCondition: new SmartEarth.Cesium.DistanceDisplayCondition(0, 2000), - fontColor: "#ffffff", - fontSize: 20 - }, "0"); - console.log("point", point); - emergencyAreaList.push(point); - }); - treeMap.set("閬块櫓鐐�", emergencyAreaList); -} -function toggleLayerVisible(name, checked) { - const entityList = treeMap.get(name); - if (Array.isArray(entityList) && entityList.length > 0) { - entityList.forEach((entity) => { - entity.show = checked; +/** + * 娣诲姞閬块櫓鍦烘墍鏁版嵁 + */ +function addTetrahedron() { + getSafePoint(110116110218).then((res) => { + const geoJsonData = convertToGeoJson(res.data); // 杞崲涓� GeoJSON + // 鍔犺浇 GeoJSON 鏁版嵁鍒板湴鍥� + loadAreaPolygon(geoJsonData, true).then((entities) => { + entities.forEach((entity) => (entity.show = false)); + treeMap.set("閬块櫓鍦烘墍", entities); }); - } - treeMap.set(name, entityList); + }); } -function getData() { - initDevicePoint(); - initDistrictPoint(); +/** + * 鍒濆鍖栨墍鏈夋暟鎹� + */ +function initData() { initDuanmianPoint(); + addTetrahedron(); } -// 閫氳繃 store 浼犻�掗渶瑕侀�変腑鐨刱ey +// 鐩戝惉 store 涓殑 checkedKeys 鍙樺寲 watch( () => checkedKeys.value, (keys) => { - if (keys && Array.isArray(keys)) { - treeRef.value.setCheckedKeys( - defaultSelectedKeys.value.concat(keys), - true - ); + if (Array.isArray(keys)) { + treeRef.value?.setCheckedKeys([...defaultSelectedKeys.value, ...keys]); } } ); +// 鐩戝惉璺敱鍙樺寲 watch( () => route.fullPath, (path) => { - const defaultKeys = defaultSelectedKeys.value; - if (path == "/yhgl") { - treeRef.value.setCheckedKeys(defaultKeys.concat("瀛欒儭娌熼殣鎮g偣"), true); - toggleLayerVisible("瀛欒儭娌熼殣鎮g偣", true); - toggleLayerVisible("缁煎悎鐩戞祴璁惧淇℃伅", false); - toggleLayerVisible("瀛欒儭娌熸柇闈�", false); - } else if (path == "/zhjc") { - treeRef.value.setCheckedKeys( - defaultKeys.concat("缁煎悎鐩戞祴璁惧淇℃伅"), - true - ); - toggleLayerVisible("缁煎悎鐩戞祴璁惧淇℃伅", true); - toggleLayerVisible("瀛欒儭娌熼殣鎮g偣", false); - toggleLayerVisible("瀛欒儭娌熸柇闈�", false); - } else if (path == "/mnfz") { - treeRef.value.setCheckedKeys( - defaultKeys.concat("瀛欒儭娌熸柇闈�"), - false - ); - toggleLayerVisible("瀛欒儭娌熸柇闈�", false); - toggleLayerVisible("瀛欒儭娌熼殣鎮g偣", false); - toggleLayerVisible("缁煎悎鐩戞祴璁惧淇℃伅", false); - } else { - treeRef.value.setCheckedKeys(defaultKeys, true); - } - } + const defaultKeys = [...defaultSelectedKeys.value]; + const checkedKeys = + { + // 椤甸潰榛樿鍕鹃�夋樉绀哄湪姝ゅ + "/yhgl": [...defaultKeys, "瀛欒儭娌熼殣鎮g偣"], + "/zhjc": [...defaultKeys, "缁煎悎鐩戞祴璁惧淇℃伅"], + // "/mnfz": [...defaultKeys, "瀛欒儭娌熸柇闈�"], + }[path] || defaultKeys; + + treeRef.value?.setCheckedKeys(checkedKeys); + }, + { immediate: true } ); + +// 缁勪欢鎸傝浇鏃跺垵濮嬪寲 onMounted(() => { - initMap(); - getData(); + initTerrainLayer(); + initData(); + nextTick(() => { + treeRef.value?.setCheckedKeys(defaultSelectedKeys.value); + }); }); + +// 缁勪欢鍗歌浇鏃舵竻鐞嗚祫婧� onUnmounted(() => { viewer.entities.removeAll(); + // 娓呯悊鎵�鏈夊浘灞傚紩鐢� + treeMap.forEach((layer) => { + if (layer.removeFromMap) { + layer.removeFromMap(); + } + }); + treeMap.clear(); }); </script> <style lang="less" scoped> +@import url("../../assets/css/infobox.css"); + .layer-tree { - // position: absolute; - // top: 11%; - // right: 25%; background: url("@/assets/img/tools/plotting_new.png"); width: 200px; - height: 200px; z-index: 99; + overflow: hidden; + + :deep(.el-tree) { + overflow: hidden !important; + } } </style> -- Gitblit v1.9.3