From 666dc130e2d6bae9bb48b736da16671b96fef806 Mon Sep 17 00:00:00 2001 From: zhaipx Date: Thu, 6 Mar 2025 17:26:10 +0800 Subject: [PATCH] =?UTF-8?q?feature:=20=E5=A2=9E=E5=8A=A0=E5=9B=BE=E5=B1=82?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=BB=84=E4=BB=B6=E5=8F=8A=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=88=E7=9B=AE=E5=89=8D=E4=BB=85=E6=94=AF?= =?UTF-8?q?=E6=8C=81DataSource=20=E5=92=8C=20ImageryLayer=20=E7=9A=84?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/js/Airline.js | 5 - src/assets/js/cesium-map/measureDistance.js | 36 ++++++- src/components/LayerItem.vue | 96 ++++++++++++++++++ src/components/map/LayerManager.vue | 106 +++++++++++++++++++- src/components/toolbar.vue | 41 +++++--- src/store/layerManagerStore.ts | 30 ++++++ src/store/staticOptions.js | 4 +- tsconfig.json | 2 +- 8 files changed, 293 insertions(+), 27 deletions(-) delete mode 100644 src/assets/js/Airline.js create mode 100644 src/components/LayerItem.vue create mode 100644 src/store/layerManagerStore.ts diff --git a/src/assets/js/Airline.js b/src/assets/js/Airline.js deleted file mode 100644 index bc437b6..0000000 --- a/src/assets/js/Airline.js +++ /dev/null @@ -1,5 +0,0 @@ -export default class Airline { - constructor(points) { - - } -} \ No newline at end of file diff --git a/src/assets/js/cesium-map/measureDistance.js b/src/assets/js/cesium-map/measureDistance.js index 98c0c67..0f99364 100644 --- a/src/assets/js/cesium-map/measureDistance.js +++ b/src/assets/js/cesium-map/measureDistance.js @@ -1,7 +1,9 @@ import * as Cesium from 'cesium' import {Cartesian3} from 'cesium' import {useStaticStore} from "@/store/staticOptions.js"; - +import {useLayerStore} from "@/store/layerManagerStore.ts"; +const store = useStaticStore() +let time = new Date() export default class MeasureDistance { constructor(viewer) { this.viewer = viewer @@ -129,6 +131,7 @@ export default class MeasureDistance { // console.log(dataSource); this.viewer.dataSources.add(dataSource); this.viewer.flyTo(dataSource); + useLayerStore().addLayer(kml_file.name,kmlDataPromise,undefined,true) }); } @@ -148,6 +151,8 @@ export default class MeasureDistance { dataGeo.then((dataSources) => { console.log(dataSources); viewer.dataSources.add(dataSources); + useLayerStore().addLayer(js_file.name,dataGeo,undefined,true) + // 获取datasources中的实体 let entities = dataSources.entities.values; //获取每一个实体 @@ -167,6 +172,34 @@ export default class MeasureDistance { }); } + AddWMSLayer(url){ + let wmsProvider = new Cesium.WebMapServiceImageryProvider({ + url: url, //baseurl + workspace + '/wms', + enablePickFeatures: true, + defaultAlpha: 0, + parameters: { + service: 'WMS', + version: '1.1.1', + request: 'GetMap', + format: 'image/png8', + styles: '', + transparent: true + } + }); + let imageLayer = new Cesium.ImageryLayer(wmsProvider,{ + 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) + }) + } + /** * Cesium实体导出Geojson,只导出实体中的 polyline polygon rectangle * @param entity @@ -263,6 +296,7 @@ export default class MeasureDistance { return geoJson } + /** * 显示飞行航线 * @param line Airline diff --git a/src/components/LayerItem.vue b/src/components/LayerItem.vue new file mode 100644 index 0000000..f8309ef --- /dev/null +++ b/src/components/LayerItem.vue @@ -0,0 +1,96 @@ + + + + + \ No newline at end of file diff --git a/src/components/map/LayerManager.vue b/src/components/map/LayerManager.vue index cbdb0d6..71d7ec2 100644 --- a/src/components/map/LayerManager.vue +++ b/src/components/map/LayerManager.vue @@ -1,16 +1,118 @@ diff --git a/src/components/toolbar.vue b/src/components/toolbar.vue index f442454..c26b0ff 100644 --- a/src/components/toolbar.vue +++ b/src/components/toolbar.vue @@ -14,6 +14,7 @@ import {useStaticStore} from "@/store/staticOptions.js"; import {login, requestAirline} from "@/assets/js/request.js"; import {dataProcess, getAirline} from "@/assets/js/websocketProtocol.ts"; import SpatialAnalysis from "@/components/SpatialAnalysis.vue"; +import LayerManager from "@/components/map/LayerManager.vue"; const message = useMessage(); let SceneValue; @@ -22,6 +23,7 @@ let hasPlane = ref(false); let store = useStaticStore(); const spatialAnalyse= ref(null) +const layerManager= ref(null) SceneValue = ref('untrace'); function handleSceneSelect(key){ @@ -193,18 +195,25 @@ function getUavAirline() { } } +function manageLayer(){ + layerManager.value?.open_closeSidebar() +}