feature: 航线加入图层管理

devzpx
rainbowZZ 3 weeks ago
parent cbf0295bd8
commit 24a7fc184e

@ -131,7 +131,7 @@ export default class RouteManageViewer {
depthFailMaterial: Cesium.Color.YELLOW depthFailMaterial: Cesium.Color.YELLOW
} }
this.endDraw(); this.endDraw();
resolve(this._Cartesian_degrees(this.positions)) resolve([this._Cartesian_degrees(this.positions),[...this.vertexEntities,this.lineEntity]])
} }
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK); }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);

@ -151,7 +151,7 @@ export default class MeasureViewer {
// console.log(dataSource); // console.log(dataSource);
this.viewer.dataSources.add(dataSource); this.viewer.dataSources.add(dataSource);
this.viewer.flyTo(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) => { dataGeo.then((dataSources) => {
console.log(dataSources); console.log(dataSources);
viewer.dataSources.add(dataSources); viewer.dataSources.add(dataSources);
useLayerStore().addLayer(js_file.name,dataGeo,undefined,true) useLayerStore().addLayer(js_file.name,dataGeo,undefined,undefined,true)
// 获取datasources中的实体 // 获取datasources中的实体
let entities = dataSources.entities.values; let entities = dataSources.entities.values;
@ -210,14 +210,7 @@ export default class MeasureViewer {
alpha: 0.6 alpha: 0.6
}); });
this.viewer.imageryLayers.add(imageLayer); this.viewer.imageryLayers.add(imageLayer);
useLayerStore().addLayer(url,undefined,imageLayer,true) useLayerStore().addLayer(url,undefined,imageLayer,undefined,true)
}
clearLayers(){
useLayerStore().Layers.forEach(layer=>{
this.viewer.imageryLayers.remove(layer?.imageLayer,true)
this.viewer.dataSources.remove(layer?.dataSource,true)
})
} }
/** /**

@ -3,6 +3,7 @@ import {Menu} from "@vicons/ionicons5";
import {useLayerStore} from "@/store/layerManagerStore.ts"; import {useLayerStore} from "@/store/layerManagerStore.ts";
import {ref} from "vue"; import {ref} from "vue";
let layerShow = ref(true) let layerShow = ref(true)
let layer: {name:string,id:string} = { let layer: {name:string,id:string} = {
name:'', id:'' name:'', id:''
} }
@ -25,12 +26,21 @@ function handleLayerItem(key:any) {
if(layer.imageLayer){ if(layer.imageLayer){
window.viewer.imageryLayers.remove(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 break
} }
case 'lookAt': { case 'lookAt': {
if(layer.dataSource) window.viewer.flyTo(layer.dataSource) if(layer.dataSource) window.viewer.flyTo(layer.dataSource)
if(layer.imageLayer) window.viewer.flyTo(layer.imageLayer) if(layer.imageLayer) window.viewer.flyTo(layer.imageLayer)
break if(layer.entity.length>0) window.viewer.flyTo(layer.entity.at(-1))
break
} }
case 'moveTop': { case 'moveTop': {
//TODO: //TODO:
@ -55,9 +65,16 @@ function onCheck(checked: boolean) {
layer.dataSource.then((ds)=>{ layer.dataSource.then((ds)=>{
ds.show = true ds.show = true
}) })
window.viewer.flyTo(layer.dataSource);
} }
if(layer.imageLayer) layer.imageLayer.show = true 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{ // else{ //
if(layer.dataSource) { if(layer.dataSource) {
@ -66,7 +83,12 @@ function onCheck(checked: boolean) {
}) })
} }
if(layer.imageLayer) layer.imageLayer.show = false 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 layer.show = false
} }
} }

@ -34,8 +34,19 @@ let wmsConfig = {
function addWMSLayer(){ function addWMSLayer(){
window.measureViewer.AddWMSLayer(wmsConfig.url) window.measureViewer.AddWMSLayer(wmsConfig.url)
} }
//
function clearLayers(){ 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()
} }
</script> </script>

@ -58,7 +58,7 @@ export default defineComponent({
}, },
setNetworkTimer(){ setNetworkTimer(){
this.timeId = setInterval(()=>{ this.timeId = setInterval(()=>{
console.log(navigator['connection'].downlink) // console.log(navigator['connection'].downlink)
if(navigator['connection'].downlink < 1){ if(navigator['connection'].downlink < 1){
this.staticStore.networkStatus.offlineMode = true this.staticStore.networkStatus.offlineMode = true
if(this.msgbox){ if(this.msgbox){

@ -277,6 +277,7 @@ function sendRouteToQT(routeUnicode: string|number){
if(sStore.webskt.ws?.readyState == WebSocket.OPEN){ if(sStore.webskt.ws?.readyState == WebSocket.OPEN){
console.log(selectedRoute) console.log(selectedRoute)
sStore.webskt.ws.send(JSON.stringify(selectedRoute)) sStore.webskt.ws.send(JSON.stringify(selectedRoute))
uiMsg.info('航线' + selectedRoute.name + '已下发')
}else { }else {
uiMsg.info('请先开启WebSocket') uiMsg.info('请先开启WebSocket')
} }

@ -284,19 +284,19 @@ function startDrawRoute(routeParams) {
drawLine.start().then(result => { drawLine.start().then(result => {
// result AirlinePoint // result AirlinePoint
let AirlinePoints = [] 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} 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.push(AirlinePoint)
}) })
AirlinePoints.at(-1).ch2 = 0x01; AirlinePoints.at(-1).ch2 = 0x01;
// 线store // 线store
let aRoute = { 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 name: routeParams.name, points: AirlinePoints, totalDistance: 0
} }
useRouteStore().addRoute(aRoute) useRouteStore().addRoute(aRoute)
console.log(useRouteStore().flyRoute) // 线
// fixme: 线 lStore.addLayer(aRoute.name,undefined,undefined, result[1],true)
}).catch(reject => { }).catch(reject => {
message.error(reject) message.error(reject)

@ -5,6 +5,7 @@ type layer = {
lId: string lId: string
dataSource?: any dataSource?: any
imageLayer?: any imageLayer?: any
entity?: any[]
show: boolean show: boolean
} }
@ -26,17 +27,27 @@ export const useLayerStore = defineStore('LayerStore', {
} }
}, },
actions: { 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 time = new Date()
let layer: layer = { let layer: layer = {
dataSource: dataSource, dataSource: dataSource,
imageLayer: imageLayer, imageLayer: imageLayer,
entity: entity,
lId: time.getTime().toString(), lId: time.getTime().toString(),
lName: lName, lName: lName,
show: show show: show,
} }
this.Layers.push(layer) 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 = []
} }
} }
}) })

@ -40,7 +40,7 @@ export default defineConfig({
server: { server: {
proxy: { proxy: {
'/onlinetest': { '/onlinetest': {
target: 'http://172.10.0.195:10323/', target: 'http://123.57.54.1:10323/',
changeOrigin: true, changeOrigin: true,
rewrite: path => path.replace(/^\/onlinetest/,'') rewrite: path => path.replace(/^\/onlinetest/,'')
} }

Loading…
Cancel
Save