From 24a7fc184e9ced3ca195990c3004fd34030a3f42 Mon Sep 17 00:00:00 2001 From: rainbowZZ <13297380+zhaipx@user.noreply.gitee.com> Date: Mon, 19 May 2025 09:24:59 +0800 Subject: [PATCH] =?UTF-8?q?feature:=20=E8=88=AA=E7=BA=BF=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E5=9B=BE=E5=B1=82=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/js/RouteManageViewer.js | 2 +- src/assets/js/measureViewer.js | 13 +++--------- src/components/LayerItem.vue | 28 ++++++++++++++++++++++--- src/components/LayerManager.vue | 13 +++++++++++- src/components/page/HomePage.vue | 2 +- src/components/page/RouteManagePage.vue | 1 + src/components/toolbar.vue | 8 +++---- src/store/layerManagerStore.ts | 15 +++++++++++-- vite.config.ts | 2 +- 9 files changed, 61 insertions(+), 23 deletions(-) diff --git a/src/assets/js/RouteManageViewer.js b/src/assets/js/RouteManageViewer.js index c0d64e2..48143ed 100644 --- a/src/assets/js/RouteManageViewer.js +++ b/src/assets/js/RouteManageViewer.js @@ -131,7 +131,7 @@ export default class RouteManageViewer { depthFailMaterial: Cesium.Color.YELLOW } this.endDraw(); - resolve(this._Cartesian_degrees(this.positions)) + resolve([this._Cartesian_degrees(this.positions),[...this.vertexEntities,this.lineEntity]]) } }, Cesium.ScreenSpaceEventType.RIGHT_CLICK); diff --git a/src/assets/js/measureViewer.js b/src/assets/js/measureViewer.js index 5a2b255..9f64e23 100644 --- a/src/assets/js/measureViewer.js +++ b/src/assets/js/measureViewer.js @@ -151,7 +151,7 @@ export default class MeasureViewer { // console.log(dataSource); this.viewer.dataSources.add(dataSource); this.viewer.flyTo(dataSource); - useLayerStore().addLayer(kml_file.name,kmlDataPromise,undefined,true) + useLayerStore().addLayer(kml_file.name,kmlDataPromise,undefined,undefined,true) }); } @@ -171,7 +171,7 @@ export default class MeasureViewer { dataGeo.then((dataSources) => { console.log(dataSources); viewer.dataSources.add(dataSources); - useLayerStore().addLayer(js_file.name,dataGeo,undefined,true) + useLayerStore().addLayer(js_file.name,dataGeo,undefined,undefined,true) // 获取datasources中的实体 let entities = dataSources.entities.values; @@ -210,14 +210,7 @@ export default class MeasureViewer { alpha: 0.6 }); this.viewer.imageryLayers.add(imageLayer); - useLayerStore().addLayer(url,undefined,imageLayer,true) - } - - clearLayers(){ - useLayerStore().Layers.forEach(layer=>{ - this.viewer.imageryLayers.remove(layer?.imageLayer,true) - this.viewer.dataSources.remove(layer?.dataSource,true) - }) + useLayerStore().addLayer(url,undefined,imageLayer,undefined,true) } /** diff --git a/src/components/LayerItem.vue b/src/components/LayerItem.vue index f8309ef..d25bf71 100644 --- a/src/components/LayerItem.vue +++ b/src/components/LayerItem.vue @@ -3,6 +3,7 @@ import {Menu} from "@vicons/ionicons5"; import {useLayerStore} from "@/store/layerManagerStore.ts"; import {ref} from "vue"; let layerShow = ref(true) + let layer: {name:string,id:string} = { name:'', id:'' } @@ -25,12 +26,21 @@ function handleLayerItem(key:any) { if(layer.imageLayer){ window.viewer.imageryLayers.remove(layer.imageLayer) } + if(layer.entity.length>0){ + layer.entity.forEach((item)=>{ + console.log(window.viewer.entities.remove(item)) + }) + window.viewer.scene.requestRender() + } + + useLayerStore().removeLayer(layer.lId) break } case 'lookAt': { if(layer.dataSource) window.viewer.flyTo(layer.dataSource) if(layer.imageLayer) window.viewer.flyTo(layer.imageLayer) - break + if(layer.entity.length>0) window.viewer.flyTo(layer.entity.at(-1)) + break } case 'moveTop': { //TODO: @@ -55,9 +65,16 @@ function onCheck(checked: boolean) { layer.dataSource.then((ds)=>{ ds.show = true }) + window.viewer.flyTo(layer.dataSource); } if(layer.imageLayer) layer.imageLayer.show = true - window.viewer.flyTo(layer.dataSource); + if(layer.entity.length>0){ + layer.entity.forEach((item)=>{ + window.viewer.entities.add(item) + }) + window.viewer.scene.requestRender() + } + layer.show = true } else{ //取消选中 隐藏图层 if(layer.dataSource) { @@ -66,7 +83,12 @@ function onCheck(checked: boolean) { }) } if(layer.imageLayer) layer.imageLayer.show = false - window.viewer.scene.requestRender() + if(layer.entity.length>0){ + layer.entity.forEach((item)=>{ + window.viewer.entities.remove(item) + }) + window.viewer.scene.requestRender() + } layer.show = false } } diff --git a/src/components/LayerManager.vue b/src/components/LayerManager.vue index 4e35c90..ff52a6e 100644 --- a/src/components/LayerManager.vue +++ b/src/components/LayerManager.vue @@ -34,8 +34,19 @@ let wmsConfig = { function addWMSLayer(){ window.measureViewer.AddWMSLayer(wmsConfig.url) } +//清空图层 function clearLayers(){ - window.measureViewer.clearLayers() + useLayerStore().Layers.forEach(layer=>{ + window.viewer.imageryLayers.remove(layer?.imageLayer,true) + window.viewer.dataSources.remove(layer?.dataSource,true) + if(layer.entity.length>0){ + layer.entity.forEach(entity=>{ + window.viewer.entities.remove(entity) + }) + } + }) + window.viewer.scene.requestRender() + useLayerStore().clearLayers() } diff --git a/src/components/page/HomePage.vue b/src/components/page/HomePage.vue index 898aa5b..68261e1 100644 --- a/src/components/page/HomePage.vue +++ b/src/components/page/HomePage.vue @@ -58,7 +58,7 @@ export default defineComponent({ }, setNetworkTimer(){ this.timeId = setInterval(()=>{ - console.log(navigator['connection'].downlink) + // console.log(navigator['connection'].downlink) if(navigator['connection'].downlink < 1){ this.staticStore.networkStatus.offlineMode = true if(this.msgbox){ diff --git a/src/components/page/RouteManagePage.vue b/src/components/page/RouteManagePage.vue index 7d530dd..4251ddb 100644 --- a/src/components/page/RouteManagePage.vue +++ b/src/components/page/RouteManagePage.vue @@ -277,6 +277,7 @@ function sendRouteToQT(routeUnicode: string|number){ if(sStore.webskt.ws?.readyState == WebSocket.OPEN){ console.log(selectedRoute) sStore.webskt.ws.send(JSON.stringify(selectedRoute)) + uiMsg.info('航线' + selectedRoute.name + '已下发') }else { uiMsg.info('请先开启WebSocket') } diff --git a/src/components/toolbar.vue b/src/components/toolbar.vue index 1cd5437..866ad3a 100644 --- a/src/components/toolbar.vue +++ b/src/components/toolbar.vue @@ -284,19 +284,19 @@ function startDrawRoute(routeParams) { drawLine.start().then(result => { // result是经纬度坐标数组,需转换为 AirlinePoint数组 let AirlinePoints = [] - result.forEach((pt,index) => { + result[0].forEach((pt,index) => { let AirlinePoint = {lon:pt.lon, lat:pt.lat, alt:pt.alt, ch1:routeParams.isClose? 0:2, ch2:0x03, speed:0, nPt:index+1} AirlinePoints.push(AirlinePoint) }) AirlinePoints.at(-1).ch2 = 0x01; // 航线加入store let aRoute = { - code: routeParams.code, PtNum: result.length, isClose: routeParams.isClose, unicode: getUnicode(), + code: routeParams.code, PtNum: result[0].length, isClose: routeParams.isClose, unicode: getUnicode(), name: routeParams.name, points: AirlinePoints, totalDistance: 0 } useRouteStore().addRoute(aRoute) - console.log(useRouteStore().flyRoute) - // fixme: 航线加入图层管理 + // 航线加入图层管理 + lStore.addLayer(aRoute.name,undefined,undefined, result[1],true) }).catch(reject => { message.error(reject) diff --git a/src/store/layerManagerStore.ts b/src/store/layerManagerStore.ts index c3e1e31..bd29a2b 100644 --- a/src/store/layerManagerStore.ts +++ b/src/store/layerManagerStore.ts @@ -5,6 +5,7 @@ type layer = { lId: string dataSource?: any imageLayer?: any + entity?: any[] show: boolean } @@ -26,17 +27,27 @@ export const useLayerStore = defineStore('LayerStore', { } }, actions: { - addLayer(lName: string, dataSource?:any, imageLayer?: any,show= true) { + addLayer(lName: string, dataSource?:any, imageLayer?: any,entity?: any[], show= true) { let time = new Date() let layer: layer = { dataSource: dataSource, imageLayer: imageLayer, + entity: entity, lId: time.getTime().toString(), lName: lName, - show: show + show: show, } this.Layers.push(layer) + }, + removeLayer(lId: string) { + let i = this.Layers.findIndex((layer:layer) => layer.lId === lId) + if(i > -1){ + this.Layers.splice(i, 1) + } + }, + clearLayers(){ + this.Layers = [] } } }) \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index b0e8e9b..561a71f 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -40,7 +40,7 @@ export default defineConfig({ server: { proxy: { '/onlinetest': { - target: 'http://172.10.0.195:10323/', + target: 'http://123.57.54.1:10323/', changeOrigin: true, rewrite: path => path.replace(/^\/onlinetest/,'') }