From 687d15815ed738173c5a82495f0056fb2c9d7f25 Mon Sep 17 00:00:00 2001 From: guonan <guonan201020@163.com> Date: 星期二, 08 七月 2025 15:56:20 +0800 Subject: [PATCH] 优化 --- src/utils/map.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 48 insertions(+), 10 deletions(-) diff --git a/src/utils/map.js b/src/utils/map.js index f6f3975..b7939e0 100644 --- a/src/utils/map.js +++ b/src/utils/map.js @@ -1,5 +1,8 @@ import { showDeviceDetail, deviceDetail, className, dialogPositon } from "@/store"; -import { componentToSlot } from "element-plus/es/components/table-v2/src/utils.mjs"; + +import { useSimStore } from '@/store/simulation' + + export function addTerrain(url) { // console.log("鍔犺浇鍦板舰"); var terrainProvider = new Cesium.CesiumTerrainProvider({ @@ -58,15 +61,33 @@ } let entities = []; -// 鍋囪浣犳湁涓�涓叏灞�瀛樺偍 entities 鐨勭粨鏋勶紙寤鸿鐢� Map 鎻愰珮鎬ц兘鏌ユ壘锛� const pointEntityMap = new Map(); // key: id, value: entity export function createPoint(option) { - const { id, type = "", name = "榛樿鍚嶇О", view, latitude, longitude, height, callback, imgWidth = 56, imgHeight = 67, showBillboard = true, showLabel = true, className = "device" } = option; + const { + id, + type = "", + deviceTypeName = "", + name = "榛樿鍚嶇О", + view, + latitude, + longitude, + height, + callback, + imgWidth = 56, + imgHeight = 67, + showBillboard = true, + showLabel = true, + className = "device" + } = option; + + + const realType = type || deviceTypeName; + // 濡傛灉宸茬粡瀛樺湪璇� id 鐨� entity锛屽垯璺宠繃鍒涘缓 if (pointEntityMap.has(id)) { - console.log(`鐐� ${id} 宸插瓨鍦紝璺宠繃鍒涘缓`); - return; + clearAllPoints() + console.log(`鐐� ${id} 宸插瓨鍦紝宸叉竻闄ら噸寤篳); } let position = Cesium.Cartesian3.fromDegrees(longitude, latitude, height || 50); @@ -75,14 +96,17 @@ id, name: name, position: position, - type: type, + type: realType, view: view, attrs: option, className: className, label: { text: name || "榛樿鏍囩", font: "14pt Source Han Sans CN", - fillColor: type.includes("active") ? Cesium.Color.AQUA : Cesium.Color.WHITE, + fillColor: (typeof realType === 'string' && realType.includes("active")) + ? Cesium.Color.AQUA + : Cesium.Color.WHITE, + // fillColor: Cesium.Color.WHITE, backgroundColor: showBillboard ? Cesium.Color.BLACK.withAlpha(0.5) : Cesium.Color.SKYBLUE, showBackground: true, outline: false, @@ -94,9 +118,10 @@ verticalOrigin: Cesium.VerticalOrigin.CENTER, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, pixelOffset: new Cesium.Cartesian2(0, -40), - distanceDisplayCondition: type.includes("娌虫祦") + distanceDisplayCondition: (typeof realType === 'string' && realType.includes("娌虫祦")) ? new Cesium.DistanceDisplayCondition(0, 5000000) : new Cesium.DistanceDisplayCondition(0, 50000), + // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 50000), heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND, show: showLabel, }, @@ -112,9 +137,11 @@ pixelOffset: new Cesium.Cartesian2(0, 3), scale: 0.8, scaleByDistance: new Cesium.NearFarScalar(1.5e2, 1.0, 1.5e7, 0.5), - distanceDisplayCondition: type.includes("娌虫祦") + distanceDisplayCondition: (typeof realType === 'string' && realType.includes("娌虫祦")) ? new Cesium.DistanceDisplayCondition(0, 5000000) : new Cesium.DistanceDisplayCondition(0, 50000), + distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 50000), + show: showBillboard, heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND, backgroundColor: showBillboard ? Cesium.Color.BLACK.withAlpha(0.8) : Cesium.Color.SKYBLUE, @@ -172,7 +199,18 @@ if (Cesium.defined(picked) && id) { const entity = picked?.id; - if (entity && entity.className) { + const simStore = useSimStore() + if (entity && !simStore.openDia && entity.attrs.type == '娉ヤ綅璁�') { + let obj = { + deviceName: entity.attrs.deviceName, + latitude: entity.attrs.latitude, + longitude: entity.attrs.longitude + } + simStore.selectNWJ = obj + showDeviceDetail.value = false; + console.log(simStore.selectNWJ, 'map.js鐐瑰嚮娉ヤ綅璁�') + } + if (entity && entity.className && simStore.openDia) { showDeviceDetail.value = true; deviceDetail.value = entity.attrs; className.value = entity.className; -- Gitblit v1.9.3