feature: 航线加入图层管理

devzpx
rainbowZZ 3 weeks ago
parent cbf0295bd8
commit 24a7fc184e

@ -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);

@ -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)
}
/**

@ -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
}
}

@ -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()
}
</script>

@ -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){

@ -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')
}

@ -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)

@ -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 = []
}
}
})

@ -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/,'')
}

Loading…
Cancel
Save