From e6446622c290d061b22d4baf99e8d0e51cc20dd2 Mon Sep 17 00:00:00 2001 From: aq Date: Thu, 17 Apr 2025 15:49:17 +0800 Subject: [PATCH] 4-17 --- public/images/icons/详情.png | Bin 0 -> 654 bytes public/images/icons/轨迹回放.png | Bin 0 -> 571 bytes public/json/timezone.geojson | 616812 +++++++++++++++ src/assets/image/icon/excel.png | Bin 0 -> 652 bytes src/assets/image/icon/photo.png | Bin 0 -> 519 bytes src/assets/image/icon/word.png | Bin 0 -> 605 bytes src/assets/image/icon/zip.png | Bin 0 -> 593 bytes src/assets/image/详情.png | Bin 0 -> 654 bytes src/hooks/entity.ts | 263 +- src/views/Content/components/Header/index.vue | 171 +- src/views/Mubiao/hooks/mubiao.ts | 92 +- src/views/Mubiao/hooks/mubiaoDetail.jsx | 2 + src/views/Mubiao/index.vue | 68 +- src/views/Payload/Detection.jsx | 15 +- .../TextReport/components/List/index.vue | 61 +- 15 files changed, 617432 insertions(+), 52 deletions(-) create mode 100644 public/images/icons/详情.png create mode 100644 public/images/icons/轨迹回放.png create mode 100644 public/json/timezone.geojson create mode 100644 src/assets/image/icon/excel.png create mode 100644 src/assets/image/icon/photo.png create mode 100644 src/assets/image/icon/word.png create mode 100644 src/assets/image/icon/zip.png create mode 100644 src/assets/image/详情.png diff --git a/public/images/icons/详情.png b/public/images/icons/详情.png new file mode 100644 index 0000000000000000000000000000000000000000..7bcb13b40eb29e44b91a46823a691c776235369c GIT binary patch literal 654 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh#=yXs;VfNiMmfRT^E3MU&8hQ?Ws5;K>l-sFA1`H05k6$X>Dr8iypv|+biVbY1^xp51wBnki8=eGLx zz3!H05B}OMUCo;x9{)1L%l+H8lWQX;ST5h!zWbz`O4p}w_Uj( zIoa=MmZ8dH`O7Nufsdu%Sx$Xavi030jWb&&hC6JSZM0cBQaRdln`XuLtg=h;%Qh9) z)LvMwyY6@Hx%IO<+?bwiIwQM8P%Q4e=>A1t)H;~Tv-Vi%?b6@7?VECSNyX(ezt^3Y zbv-Zd-5YDRE6|{^P7Wun!S%yOsXRO|AO zRxg(_NGk7bbK#%rWxL^=cwWIrZ!ytzMT%xWyzfpwf1)yKk?D?_<$EB0^dCk5-tzFcMZ`^r8MmbsyMM{ERM_BU}b&f2Nn9QUD7yNW$fcmG`N dJ)QhNm=Cg^iPSo3`U8{}JYD@<);T3K0RU;W5N-ef literal 0 HcmV?d00001 diff --git a/public/images/icons/轨迹回放.png b/public/images/icons/轨迹回放.png new file mode 100644 index 0000000000000000000000000000000000000000..30bfa8b48566d63fd9c7bea4ff973a94bf34ecd5 GIT binary patch literal 571 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh#=yXs;Va=I%VQB4J_Uj3uHj7mhhiXqd3%3;U1O-qyKCV;z2nm_?~9jW}}5$;JEj z?gn{NsJ@5P3>fg`G(#0DN7u^wdW@z}x`0VFx7jw@3 zX^(B+-VKPK5j^9pFRRb(&q`X+^QybN1yv_~*wiPGb~k!c&ij~x7&cC&tQlsvYnvK> zBm_-ddiwj48m*tk2@_`bm7lU;{}{2*YI>DOoNUm)gA2lRQ#M`5vS(?_V;4A9^z+M1 zCBd(ayOh5A$63Tho3%J}9$1-vx^m^pyIF0Gc>y!tB<{VvK}<$hDeBv6lf>s-JNP>) z&aO4=NMIA#H!*3aSK${ujYYjrtG!I_#o5i=u~x)r^FgMWzQ^~nANV*iq-upttNo$O z#VTQU?<&fhF>W*y@Sie!?XrUvv)8Av^4?hcWOMW;Kcys*MIq(lweo!|uMG-z&N}a6 zk-8=4dxQ4+qSVrl65YBD@AEqfXI%RHRH^Q@lI?YXNv?1%zOWK-E-HTCjxqkt_opMU2`2LDS75AKGEN>hxw>TW>D6`IT4wv9A;r< zT#wc&3bh_~Qc>|$NKYu|oRh9+`R!ZYeT(#U#@nPt5>ST`fEHAT)YB(J@e($*y6U`xNXb3d(y4)^6JD%2X7RtWvmf?X_vdL zLP=ff@x^Z+pC&zMl-KqC`*+V1*Yzgi{OtBizDQ^AM7+E|bJ+zJ3!M%2j3tu{{~9Pf zI?3a5Gxhti%S%^ROHRI7z0aihWW(3A500xZzHN^`%y*`P)iNlcJav~Po2~Tv=SNwK z(sG1e_>>vyehuRGDoFQ;%W*h*PClq4AtyRG<(}96W9m%=R+04V byz$Zg?cwXsjHe231*HT}S3j3^P69puN?n+-@BzO7%SJ(+oF{q-nG>%$U2rpKy%yHBl&kuP zyuhW%B|(bWL33I=9N!;M{iM^98znZu%*CpwdlvoB64c(kO~+!z?28(L^)qHpdCJ6%Hzjo;c@7`_Hm1nO`>e%st`gmHXWI)wM~g zf43cf;M{%k>RL;;0Odo<3-V?hPWHZWBI*#6Jzq&YcP$v?S)o zo@a28NW9Q2aynaG`|{?zt+wY6o}c?C)#up1m!Gaw+V5U{c6DyGh)5eZliHFOGKTAq zzbq-*8n0oz{MVL+Yp!ffGWj&~&gF|qA1w<#+RYpuihiE{$(Fg&vPeraOz*1r2gM3C sL4ITJXhXeahYTKtTwZ^BWdg$w)?KP|ZRQ(`vt6x(7nEw(3XV%^aRi~V>PsXRYmzC q$k_H zT0LyaHc%@{^SZv_tdy`*_{>cVVI@{;KY40h^p;4O+~mu8JZYh{inyv;t5V$@pL^>j zX-D%;R&krG=ozGNXz}8CFGM!1Jk@X^-D&2B9v4pIUkndw?>C4|EZT6RrS(25tJ0$M zIc1skrXmHO=BZd13cWhV=xJSeAc5Q8?{NapWe=NxJNlmY?9-%nbq4!Bnjdj+X6)pU zUWIb)q|o1~5zKMt^^QneU%So0x#^g~8!@SmVkW;Q{krh-?&MmZ!qAOT>353v?B4cx zP5P&;i_Lyl{b};6JiY3?+1-BehgGX*KfbU`#b|1U4gY+e1s&gSCNo{L=+?Qc!D_); z)7hS;HSufkpU|yZitV+}s)_|JpPT&g;Pv0?za1Dt&Zz!1n&Yz1KD6rOL-$Y7qQ?%r cDD|yp=6ikc$(NsJ8$eO(>FVdQ&MBb@08P^GBLDyZ literal 0 HcmV?d00001 diff --git a/src/assets/image/icon/zip.png b/src/assets/image/icon/zip.png new file mode 100644 index 0000000000000000000000000000000000000000..e930e0e3e5c95c224418af1f96a9fdfea6890d3b GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh#=yXs;Va=H9gCiTK(0BUEBTfB?%z5tXF1^#=|ea?%zS&H2jC;pP(HsB`4hv3@53 z6US;+>x~zjJQOZ!aXIE6H|MXrKbhrPdB&X!+XGfyint)4e&IvYa)bZeS<5#Z-ZUf8 P8x)fNiMmfRT^E3MU&8hQ?Ws5;K>l-sFA1`H05k6$X>Dr8iypv|+biVbY1^xp51wBnki8=eGLx zz3!H05B}OMUCo;x9{)1L%l+H8lWQX;ST5h!zWbz`O4p}w_Uj( zIoa=MmZ8dH`O7Nufsdu%Sx$Xavi030jWb&&hC6JSZM0cBQaRdln`XuLtg=h;%Qh9) z)LvMwyY6@Hx%IO<+?bwiIwQM8P%Q4e=>A1t)H;~Tv-Vi%?b6@7?VECSNyX(ezt^3Y zbv-Zd-5YDRE6|{^P7Wun!S%yOsXRO|AO zRxg(_NGk7bbK#%rWxL^=cwWIrZ!ytzMT%xWyzfpwf1)yKk?D?_<$EB0^dCk5-tzFcMZ`^r8MmbsyMM{ERM_BU}b&f2Nn9QUD7yNW$fcmG`N dJ)QhNm=Cg^iPSo3`U8{}JYD@<);T3K0RU;W5N-ef literal 0 HcmV?d00001 diff --git a/src/hooks/entity.ts b/src/hooks/entity.ts index fe4dc22f5..39bfb4fdb 100644 --- a/src/hooks/entity.ts +++ b/src/hooks/entity.ts @@ -26,6 +26,8 @@ export const useEntity = () => { showEntity, getHisTraj, getMBEntityOpt, + getEllipsoidEntity, + getMBEntityOptOther, createMBConicSensor, iconOrModel, changeIconOrModel, @@ -186,18 +188,259 @@ async function getMBEntityOpt({ ), scaleByDistance: new Cesium.NearFarScalar(7000000, 1.0, 18000000, 0.4), }, - // 新增 name 标签(例如显示在 id 下方) - nameLabel: { - text: '99999999999', // 假设 name 是传入的变量 + billboard: { + show: !iconOrModel.value, + image: image.img, + // image: mubiaoDict.icon, + width: 35, + height: (+image.height / +image.width) * 35, + // height: 30, + color: Cesium.Color.fromCssColorString(countryColor), + scaleByDistance: new Cesium.NearFarScalar(7000000, 1.0, 18000000, 0.4), + }, + ...(flag ? { + orientation: staticOrientation.orientation, + properties: staticOrientation.properties + } : {}), + model: { + show: iconOrModel.value, + uri: mubiaoDict.model, + scale: 50, + minimumPixelSize: 25, + }, + properties: { // 添加自定义属性 + zhName: '目标中文名称', + show: iconOrModel.value, + }, + ...ellipsoid, + } +} +async function getEllipsoidEntity({ + id, + targetType, + country, + extendInfo, +}: { + id: string + targetType: string + country: string + extendInfo?: { detectingPayload: Record } +}) { + const mubiaoDict = window.settings.mbDict[targetType] + const countryColor = window.settings.mbCountryDict[country] + + // const headingPitchRoll = new Cesium.HeadingPitchRoll( + // heading, + // pitch, + // roll + // ) + // const newOrientation = Cesium.Transforms.headingPitchRollQuaternion( + // obj.position, + // headingPitchRo11 + // ) + + + const staticOrientation = { + position: Cesium.Cartesian3.fromDegrees(116.0, 39.9, 10000), // 初始位置(北京附近,高度10km) + orientation: Cesium.Transforms.headingPitchRollQuaternion( + Cesium.Cartesian3.fromDegrees(116.0, 39.9, 10000), + new Cesium.HeadingPitchRoll( + Cesium.Math.toRadians(90), // 航向:正东方向(0=正北,90=正东) + Cesium.Math.toRadians(-90), // 俯仰:轻微下倾(模拟地球曲率) + Cesium.Math.toRadians(0) // 滚转:保持水平 + ) + ), + properties: { + velocity: 800, // 飞行速度(km/h) + heading: 90.0, // 当前航向(度) + pitch: -90, // 当前俯仰(度) + roll: 0.0, // 当前滚转(度) + altitude: 10000 // 当前高度(米) + } + }; + + // console.log(country, countryColor) + let ellipsoid; + console.log(extendInfo,targetType,id,'----exteninfo') + let flag = false ; + if(id == 'xx19' || id == 'xx42' || id == 'xx42' || id == 'xxx1' || id == 'xx14' || id == 'xx30' || id == 'xx48' || id == 'xx24' || id == 'xx'){ + flag = true + } + if (extendInfo) { + const { + angle, + maximumCone, + minimumCone, + minimumClock, + maximumClock, + radius, + } = extendInfo.detectingPayload + if (maximumClock || minimumClock || minimumCone) { + ellipsoid = { + ellipsoid: { + + radii: new Cesium.Cartesian3(radius, radius, radius), + innerRadii: new Cesium.Cartesian3(1.0, 1.0, 1.0), + maximumCone: Cesium.Math.toRadians(90), + minimumCone: Cesium.Math.toRadians(minimumCone), + minimumClock: Cesium.Math.toRadians(minimumClock), + maximumClock: Cesium.Math.toRadians(maximumClock), + material: Cesium.Color.fromCssColorString('#00dcff44'), + outline: true, + outlineColor: Cesium.Color.fromCssColorString('#00dcff'), + outlineWidth: 1, + distanceDisplayCondition: new Cesium.DistanceDisplayCondition( + 0.0, + 10.5e8 + ), + slicePartitions: 24, + stackPartitions: 36, + }, + } + } + } + const image = await getImageByColor({ + img: mubiaoDict.icon, + color: countryColor, + }) + console.log(extendInfo.detectingPayload?.zhName,'---extendInfo') + console.log(mbPayloadShowMap.get(id)?.detectingPayload?.show,'---iconOrModel.value') + + + // console.log(image.img, (+image.height / +image.width) * 30) + return { + show: mbPayloadShowMap.get(id)?.detectingPayload?.show || false, + label: { + text: `${extendInfo.detectingPayload?.zhName}`, font: '12pt sans-serif', - fillColor: Cesium.Color.WHITE, // 白色文字 + fillColor: Cesium.Color.fromCssColorString(countryColor), + // fillColor: Cesium.Color.YELLOW, outlineColor: Cesium.Color.BLACK, outlineWidth: 2, style: Cesium.LabelStyle.FILL_AND_OUTLINE, - pixelOffset: new Cesium.Cartesian2(20, -40), // 调整位置(在 id 下方) - pixelOffsetScaleByDistance: new Cesium.NearFarScalar(7000000, 1.0, 18000000, 0.4), + pixelOffset: new Cesium.CallbackProperty(() => { + const radius = ellipsoid.ellipsoid.radii.y; + return new Cesium.Cartesian2(-radius * 0.08,0); // 偏移到椭球体顶部 + }, false), + // pixelOffset: new Cesium.Cartesian2(0, -20), + // pixelOffsetScaleByDistance: new Cesium.NearFarScalar( + // 7000000, + // 1.0, + // 18000000, + // 0.4 + // ), + // scaleByDistance: new Cesium.NearFarScalar(7000000, 1.0, 18000000, 0.4), + }, + + ...ellipsoid, + } +} +async function getMBEntityOptOther({ + id, + targetType, + country, + extendInfo, +}: { + id: string + targetType: string + country: string + extendInfo?: { detectingPayload: Record } +}) { + const mubiaoDict = window.settings.mbDict[targetType] + const countryColor = window.settings.mbCountryDict[country] + + // const headingPitchRoll = new Cesium.HeadingPitchRoll( + // heading, + // pitch, + // roll + // ) + // const newOrientation = Cesium.Transforms.headingPitchRollQuaternion( + // obj.position, + // headingPitchRo11 + // ) + + + const staticOrientation = { + position: Cesium.Cartesian3.fromDegrees(116.0, 39.9, 10000), // 初始位置(北京附近,高度10km) + orientation: Cesium.Transforms.headingPitchRollQuaternion( + Cesium.Cartesian3.fromDegrees(116.0, 39.9, 10000), + new Cesium.HeadingPitchRoll( + Cesium.Math.toRadians(90), // 航向:正东方向(0=正北,90=正东) + Cesium.Math.toRadians(-90), // 俯仰:轻微下倾(模拟地球曲率) + Cesium.Math.toRadians(0) // 滚转:保持水平 + ) + ), + properties: { + velocity: 800, // 飞行速度(km/h) + heading: 90.0, // 当前航向(度) + pitch: -90, // 当前俯仰(度) + roll: 0.0, // 当前滚转(度) + altitude: 10000 // 当前高度(米) + } + }; + + // console.log(country, countryColor) + let ellipsoid; + console.log(extendInfo,targetType,id,'----exteninfo') + let flag = false ; + if(id == 'xx19' || id == 'xx42' || id == 'xx42' || id == 'xxx1' || id == 'xx14' || id == 'xx30' || id == 'xx48' || id == 'xx24' || id == 'xx'){ + flag = true + } + if (extendInfo) { + const { + angle, + maximumCone, + minimumCone, + minimumClock, + maximumClock, + radius, + } = extendInfo.detectingPayload + if (maximumClock || minimumClock || minimumCone) { + ellipsoid = { + ellipsoid: { + show: mbPayloadShowMap.get(id)?.detectingPayload?.show || false, + radii: new Cesium.Cartesian3(radius, radius, radius), + innerRadii: new Cesium.Cartesian3(1.0, 1.0, 1.0), + maximumCone: Cesium.Math.toRadians(90), + minimumCone: Cesium.Math.toRadians(minimumCone), + minimumClock: Cesium.Math.toRadians(minimumClock), + maximumClock: Cesium.Math.toRadians(maximumClock), + material: Cesium.Color.fromCssColorString('#00dcff44'), + outline: true, + outlineColor: Cesium.Color.fromCssColorString('#00dcff'), + outlineWidth: 1, + distanceDisplayCondition: new Cesium.DistanceDisplayCondition( + 0.0, + 10.5e8 + ), + slicePartitions: 24, + stackPartitions: 36, + }, + } + } + } + const image = await getImageByColor({ + img: mubiaoDict.icon, + color: countryColor, + }) + // console.log(image.img, (+image.height / +image.width) * 30) + return { + label: { + text: `${id}`, + font: '12pt sans-serif', + fillColor: Cesium.Color.fromCssColorString(countryColor), + // fillColor: Cesium.Color.YELLOW, + outlineColor: Cesium.Color.BLACK, + outlineWidth: 2, + style: Cesium.LabelStyle.FILL_AND_OUTLINE, + pixelOffset: new Cesium.Cartesian2(20, -20), + pixelOffsetScaleByDistance: new Cesium.NearFarScalar( + 7000000, + 1.0, + 18000000, + 0.4 + ), scaleByDistance: new Cesium.NearFarScalar(7000000, 1.0, 18000000, 0.4), - show: true // 默认显示 }, billboard: { show: !iconOrModel.value, @@ -219,7 +462,11 @@ async function getMBEntityOpt({ scale: 50, minimumPixelSize: 25, }, - ...ellipsoid, + // properties: { // 添加自定义属性 + // zhName: '目标中文名称', + // show: iconOrModel.value, + // }, + // ...ellipsoid, } } diff --git a/src/views/Content/components/Header/index.vue b/src/views/Content/components/Header/index.vue index de8e024a6..b0cae4664 100644 --- a/src/views/Content/components/Header/index.vue +++ b/src/views/Content/components/Header/index.vue @@ -3,6 +3,9 @@ import moment from 'moment-timezone' import { useRoute } from 'vue-router' import { time2FormatWithTimezone } from '@/utils/date' import WidgetNav from '../WidgetNav' +import axios from 'axios' +import { get } from 'lodash' + const timeZoneList1 = [ { label: '中国/北京', value: 'Asia/Shanghai' }, @@ -53,7 +56,10 @@ const timeZoneList = [ ]; const timezone = ref('UTC+8') const worldTime = ref() +let currentDataSource = ref(null); // 存储当前加载的数据源 +let highlightedEntities =ref([]); // 存储高亮实体 function adjustTime(targetValue) { + // 解析目标时区偏移量 const match = targetValue.match(/UTC([+-])(\d+)/); if (!match) throw new Error('Invalid timezone format'); @@ -93,13 +99,12 @@ function getAdjustedTime(targetValue) { // }); } -// 使用示例 -console.log('调整后时间:', getAdjustedTime('UTC+9')); // 输出:2023/10/15 13:30:00 const getTime = () => { // const date = moment(new Date()).tz(timezone.value) // console.log(date) + worldTime.value = getAdjustedTime(timezone.value) // console.log(timezone.value,'---timezone.value') // worldTime.value = time2FormatWithTimezone(new Date(), timezone.value) @@ -113,12 +118,164 @@ const getLocalTime = () => { localeTime.value = getAdjustedTime(timezone.value) requestAnimationFrame(getLocalTime) +} +const handleTimezoneChange = (selectedValue) => { + console.log('当前选择:', selectedValue) + + // 执行高亮逻辑(调用之前实现的 highlightZone 函数) + highlightZone(selectedValue) +} + +const processCoordinates = (rawCoords) => { + // 过滤无效数据并转换 + return rawCoords + .filter(point => + Array.isArray(point) && + point.length >= 2 && + !isNaN(point[0]) && + !isNaN(point[1]) + ) + .map(point => { + // 处理极地坐标限制 + const clampedLat = Math.max(-89.9999, Math.min(89.9999, point[1])) + + // 创建笛卡尔坐标 + return Cesium.Cartesian3.fromDegrees( + Number(point[0]), + clampedLat, + 0 + ) + }) +} + +// const processCoordinates = (rawCoords) => { +// // 验证输入有效性 +// if (!Array.isArray(rawCoords)) { +// throw new Error('坐标数据必须是数组') +// } + +// return rawCoords.map((point, index) => { +// if (point.length < 2) { +// throw new Error(`第 ${index + 1} 个坐标点格式错误`) +// } + +// // 处理极地坐标(纬度强制限制在 ±89.9999° 以内) +// const safeLat = Math.max(-89.9999, Math.min(89.9999, point[1])) + +// return Cesium.Cartesian3.fromDegrees( +// parseFloat(point[0]), +// safeLat, +// 0 +// ) +// }) +// } + +const getData = () => { + return axios.get("./json/timezone.geojson").then(res => { + if (res.status === 200) { + return Promise.resolve(res.data) + } else { + console.log('获取TLE失败') + return Promise.reject(res.statusText) + } + }) + } +// 加载GeoJSON并高亮 +// 时区格式转换函数 +const getZoneKey = (utcValue) => { + if(utcValue == 'UTC'){ + return '0' + } + // 示例输入: "UTC+8" → 输出: "+8" + const sign = utcValue.includes('+') ? '+' : '-' + const num = utcValue.replace(/\D/g, '') // 提取数字部分 + return `${sign}${num}` +} +const getCoordinates = (data,zoneKey) =>{ + return data.features.filter(item=>{ + return item.properties.name == zoneKey + }) +} + + +const highlightZone = async (zoneValue) => { + if (!viewer) return + + + // 2. 转换时区标识 + const zoneKey = getZoneKey(zoneValue) // "UTC+8" → "+8" + console.log(zoneKey,'---zone') + + await getData().then(async data => { + + try { + const features= getCoordinates(data,zoneKey); + + + // 2. 构造新数据源 + const geoJsonObject = { + type: "FeatureCollection", + name: "timezone", + crs: { + type: "name", + properties: { name: "urn:ogc:def:crs:OGC:1.3:CRS84" } + }, + features: features // 确保features变量已定义 + }; + + // 3. 加载新数据 + currentDataSource.value = await Cesium.GeoJsonDataSource.load(geoJsonObject, { + stroke: Cesium.Color.WHITE, + fill: Cesium.Color.TRANSPARENT + }); + + // 4. 筛选并高亮 + currentDataSource.value.entities.values.forEach(entity => { + const featureName = entity.properties?.name?.getValue(); + if (featureName === zoneKey) { + entity.polygon.material = Cesium.Color.YELLOW.withAlpha(0.7); + entity.polygon.outline = false; + highlightedEntities.value.push(entity); + } + }); + isHeight.value=true + + // 5. 添加新数据到场景 + viewer.dataSources.add(currentDataSource.value); + + // 6. 安全定位 + const coordinates = currentDataSource.value.entities.values[0].polygon.hierarchy.getValue().positions + viewer.camera.flyTo({ + destination: Cesium.Rectangle.fromCartesianArray(coordinates) + }) + } catch (error) { + console.error('时区加载失败:', error); + // viewer.camera.flyTo({ + // destination: Cesium.Rectangle.fromDegrees(104.0, 22.0, 107.0, 25.0) + // }); + } + }) + + } onMounted(() => { // console.log(moment.tz.names()) getTime() getLocalTime() }) +const isHeight=ref(false); +const btnClick=()=>{ + console.log('---btnClick') + if(isHeight.value){ + isHeight.value= !isHeight.value + if (currentDataSource.value) { + viewer.dataSources.remove(currentDataSource.value); // 从场景移除 + // currentDataSource.value.destroy(); // 销毁实例释放内存 + currentDataSource.value = null; + } + highlightedEntities.value = []; // 清空高亮实体数组 + } +} const route = useRoute() @@ -131,12 +288,13 @@ const route = useRoute()
-
+
{{ timeZoneList.find(item => item.value === timezone).label || '东八区' @@ -157,6 +315,7 @@ const route = useRoute()