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 @@ - + + + + + + 图层管理 + + + + + + + + + + + + + + + + + 添加WMS图层 + + + 清空图层 + + + + + + + + WMS资源配置 + + + + + + + + + + + 确定 + 取消 + + + + 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() +} - - - - - - - - + + + + + + + + + + + 图层管理 + @@ -215,15 +224,13 @@ function getUavAirline() { 添加数据 - - + - @@ -232,7 +239,7 @@ function getUavAirline() { - + @@ -247,7 +254,7 @@ function getUavAirline() { - + @@ -271,10 +278,11 @@ function getUavAirline() { - + + @@ -304,6 +312,7 @@ function getUavAirline() { + diff --git a/src/store/layerManagerStore.ts b/src/store/layerManagerStore.ts new file mode 100644 index 0000000..bbf7a6d --- /dev/null +++ b/src/store/layerManagerStore.ts @@ -0,0 +1,30 @@ +import {defineStore} from "pinia"; +type layer = { + lName: string + lId: string + dataSource?: any + imageLayer?: any + show: boolean +} + +export const useLayerStore = defineStore('LayerStore', { + state: ()=>{ + return { + Layers: [] as layer[] + } + }, + actions: { + addLayer(lName: string,dataSource?:any,imageLayer?: any,show=true) { + let time = new Date() + + let layer: layer = { + dataSource: dataSource, + imageLayer: imageLayer, + lId: time.getTime().toString(), + lName: lName, + show: show + } + this.Layers.push(layer) + } + } +}) \ No newline at end of file diff --git a/src/store/staticOptions.js b/src/store/staticOptions.js index 7d5ba30..ed032e7 100644 --- a/src/store/staticOptions.js +++ b/src/store/staticOptions.js @@ -1,10 +1,10 @@ import {defineStore} from "pinia"; import cesiumAirPlane from "@/assets/models/Cesium_Air.glb"; -import {ref} from "vue"; + export const useStaticStore = defineStore('staticOptions',{ state: ()=>{ return { - temp:{ + temp: { userName:"sysUser003", password:"sysUser003", token:"", diff --git a/tsconfig.json b/tsconfig.json index e213822..5e170c5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,7 +15,7 @@ "jsx": "preserve", "allowJs": true, /* Linting */ - "strict": true, + "strict": false, "noUnusedLocals": false, "noUnusedParameters": false, "noFallthroughCasesInSwitch": false,