From f0cf67e3f93bef082f2ca02139a7fe647b33e467 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期三, 15 三月 2023 18:52:02 +0800 Subject: [PATCH] 优化图层管理的折叠会折叠其它的面板;优化柱状图属性界面;优化WMS图层加载效果;优化资料馆上传的附件,前端显示不出来效果;综合展示拾取功能 --- src/views/Synthesis/LeftMenu.vue | 260 +++++++++++++++++++++++++++++---------------------- 1 files changed, 148 insertions(+), 112 deletions(-) diff --git a/src/views/Synthesis/LeftMenu.vue b/src/views/Synthesis/LeftMenu.vue index ca3e32f..be8092f 100644 --- a/src/views/Synthesis/LeftMenu.vue +++ b/src/views/Synthesis/LeftMenu.vue @@ -475,12 +475,7 @@ name: "绌洪棿鏌ヨ", css: "twoMenu_imge52", }, - { - id: "e3", - label: "synthesis.pickup", - name: "鎷惧彇", - css: "twoMenu_imge52", - }, + ], [ { @@ -1416,7 +1411,7 @@ Viewer.screenSpaceEventHandler.setInputAction(function (event) { let p = sgworld.Navigate.getMouseDegrees(event); console.log(p); - if (that.showPickUp){ + if (that.showPickUp) { that.getPickUpData(p); } }, Cesium.ScreenSpaceEventType.LEFT_CLICK); @@ -1837,7 +1832,7 @@ if (!m_box) { m_box = Viewer.entities.add({ id: 'ClopBox', - modelMatrixPrimitive:modelMatrixPrimitive, + modelMatrixPrimitive: modelMatrixPrimitive, position: boundingSphere.center, box: { dimensions: new Cesium.Cartesian3(boundingSphere.radius * 1.2, boundingSphere.radius * 1.2, 40), @@ -1922,7 +1917,7 @@ return function () { var num_x = window.localStorage.getItem('slider_x') / 100000; var num_y = window.localStorage.getItem('slider_y') / 100000; - var num_z = window.localStorage.getItem('slider_z')/1.5;//璇诲彇婊戝姩鏉″�� + var num_z = window.localStorage.getItem('slider_z') / 1.5;//璇诲彇婊戝姩鏉″�� var origin_degree = cartesian3ToDegrees(origin); var target_degree_x = [origin_degree[0] + num_x, origin_degree[1], +origin_degree[2]]; var target_degree_y = [origin_degree[0], origin_degree[1] + num_y, +origin_degree[2]]; @@ -1970,7 +1965,7 @@ } else if (type == 'top') { if (num_z < 0) { - plane.distance = m_dis_z; + plane.distance = m_dis_z; // console.log('num_z=========',num_z) // console.log('m_dis_z=========',m_dis_z) // plane.distance = distance - m_dis_z; @@ -1986,9 +1981,9 @@ } function createPlanePos(origin, x, y, z) { - var clipbox=Viewer.entities.getById('ClopBox'); + var clipbox = Viewer.entities.getById('ClopBox'); if (clipbox) { - clipbox.position=new Cesium.CallbackProperty(function () { + clipbox.position = new Cesium.CallbackProperty(function () { return Cesium.Cartesian3.fromDegrees(origin[0] + x, origin[1] + y, +origin[2] + z);//瀹炴椂杩斿洖褰撳墠鐩掑瓙鐨勪綅缃� }, false); } @@ -2232,6 +2227,7 @@ if (data.code != 200) { return this.$message.error("鍥惧眰鍒楄〃鏌ヨ澶辫触"); } + var std = data.result; var that = this; var checkKey = []; @@ -2243,17 +2239,21 @@ if (str.url != null && str.type == 2) { if (str.isShow == 1) { checkKey.push(str.id); - that.setAddLayers(str); - if (str.serveType == "WMS" && str.url){ - checkedLayers.push(str); - } } return str; } }); - //瀛樺偍閫変腑鍥惧眰 - sessionStorage.setItem("checkedLayers",JSON.stringify(checkedLayers)); + var value = std.filter((str) => { + if (str.url != null && str.type == 2 && str.isShow == 1) { + + return str; + } + }) + + this.setAddLayers(value); var res = this.setTreeData(val); + //瀛樺偍閫変腑鍥惧眰 + // sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers)); for (var i in res) { res[i].children = res[i].children.filter((val) => { @@ -2262,8 +2262,9 @@ } }); } + this.$store.state.treeData = res; - // this.$refs.tree.setCheckedKeys(checkKey); + this.$store.state.checkedKeys = checkKey; }, setTreeData(source) { @@ -2278,101 +2279,105 @@ }); }, setAddLayers(res) { - if (res.serveType == "WMS") { - var resource = geoServerURl; - if (res.resource != null && res.resource != undefined) { - resource = res.resource; + var std = [[]]; + for (var i in res) { + switch (res[i].serveType) { + case "WMS": + std[0].push(res[i]) + break; } - var imageryLayers = window.Viewer.scene.imageryLayers; - let layerWMS = new Cesium.WebMapServiceImageryProvider({ - url: resource, - layers: res.url, - parameters: { - transparent: true, - format: "image/png", - srs: "EPSG:4490", - styles: "", - }, - tileWidth: 512, - tileHeight: 512, - }); - layerWMS.name = res.cnName; - //閫忔槑搴� - var tdtAnnoLayer = imageryLayers.addImageryProvider(layerWMS); - if (res.opacity) { - tdtAnnoLayer.alpha = parseInt(res.opacity) / 100; - } - var layer2 = new Image({ - name: res.cnName, - source: new ImageWMS({ - crossOrigin: "anonymous", - url: resource, - params: { - FORMAT: "image/png", - VERSION: "1.1.1", - LAYERS: res.url, - }, - }), - }); - if (res.opacity) { - layer2.setOpacity(parseInt(res.opacity) / 100); - } - window.map.addLayer(layer2); - } else if (res.serveType == "WFS") { - var url = - res.resource + - "?service=WFS&version=1.0.0&request=GetFeature&typeName=" + - res.url + - "&outputFormat=application%2Fjson"; - $.ajax({ - url: url, - cache: false, - async: true, - success: function (data) { - var datasource = Cesium.GeoJsonDataSource.load(data, { - stroke: Cesium.Color.YELLOW, - fill: Cesium.Color.YELLOW.withAlpha(0.1), - alpha: 0.1, - strokeWidth: 8, - clampToGround: true, //鏄惁璐村湴 - }); - datasource.then((data) => { - data.name = res.cnName; - window.Viewer.dataSources.add(data); - }); - }, - error: function (data) { - console.log("error"); - }, - }); - - var vectorLayer = new VectorLayer({ - name: res.cnName, - source: new VectorSource({ - url: url, - format: new GeoJSON(), - }), - }); - window.map.addLayer(vectorLayer); - } else if (res.serveType == "Tileset") { - var tileset = Viewer.scene.primitives.add( - new Cesium.Cesium3DTileset({ - name: res.cnName, - url: modelUrl + "/" + res.url, //192.168.20.106,to4 - maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16 - maximumMemoryUsage: 768, // 鏈�澶у唴瀛橈細512 - dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse - skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false - }) - ); - - tileset.readyPromise.then(function (tileset) { - tileset.id = res.cnName; - tileset.layerId = res.id; - Viewer.flyTo(tileset); - }); + } + if (std[0].length != 0) { + this.setAddWmsLayer(std[0]) } }, + setAddWmsLayer(res) { + + for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { + var val_id = window.Viewer.imageryLayers._layers[i].imageryProvider.name; + if (val_id == "Wms_Layer") { + window.Viewer.imageryLayers.remove( + window.Viewer.imageryLayers._layers[i] + ); + } + } + var layers_ol = window.map.getAllLayers(); + for (var i in layers_ol) { + var layerOl = layers_ol[i]; + if (layerOl.values_.name == "Wms_Layer") { + window.map.removeLayer(layers_ol[i]); //鏄剧ず鍥惧眰 + } + } + var url = []; + for (var i in res) { + url.push(res[i].url) + } + url = url.reverse(); + var that = this; + var getFeatureInfoFormat = new Cesium.GetFeatureInfoFormat("html", null, function (html) { + that.getFeatureInfo(html) + }); + window.layerWMS = new Cesium.WebMapServiceImageryProvider({ + url: geoServerURl, + layers: url.toString(), + getFeatureInfoParameters: { info_format: 'text/html' }, + enablePickFeatures: true, + getFeatureInfoFormats: [getFeatureInfoFormat], + parameters: { + transparent: true, + format: "image/png", + srs: "EPSG:4490", + styles: "", + }, + tileWidth: 512, + tileHeight: 512, + }); + layerWMS.name = "Wms_Layer"; + window.Viewer.scene.imageryLayers.addImageryProvider(window.layerWMS); + var layer2 = new Image({ + name: "Wms_Layer", + source: new ImageWMS({ + crossOrigin: "anonymous", + url: geoServerURl, + params: { + FORMAT: "image/png", + VERSION: "1.1.1", + LAYERS: url.toString(), + }, + }), + }); + if (res.opacity) { + layer2.setOpacity(parseInt(res.opacity) / 100); + } + window.map.addLayer(layer2); + }, + async getFeatureInfo(html) { + var start = html.indexOf("<caption class=\"featureInfo\">") + "<caption class=\"featureInfo\">".length; + var end = html.indexOf("</caption>"); + var tab = html.substr(start, end - start); + start = html.lastIndexOf(tab) + tab.length + 1; + end = html.indexOf("</td>", start); + var gid = html.substr(start, end - start); + if (gid && tab) { + this.$store.state.pickoption = { + gid: gid, + name: tab.replaceAll("_", "") + } + + this.$refs && + this.$refs.queryinfo && + this.$refs.queryinfo.close("queryinfo"); + this.$store.state.mapPopBoxFlag = "4"; + + this.$refs && + this.$refs.queryinfo && + this.$refs.queryinfo.open("鎷惧彇鍒嗘瀽", null,); + } + + + }, + + showModelAttach() { if (this.$store.state.attachModel) { var name = this.$store.state.attachinfo.cnName; @@ -2621,6 +2626,29 @@ if (!showPop) { this.$message.warning("鏆傛棤鏁版嵁!"); } + }, + showPopBox() { + + if (this.$store.state.showPopBoxFlag == true) { + this.$refs && this.$refs.queryinfo && this.$refs.queryinfo.close(); + + + this.$refs && + this.$refs.queryinfo && + this.$refs.queryinfo.open("灞炴��", null, { + close: () => { + this.$store.state.showPopBoxFlag == false + if (this.$store.state.primitLayer != null) { + sgworld.Creator.DeleteObject(this.$store.state.primitLayer); + this.$store.state.primitLayer = null; + } + + if (window.Viewer.scene.primitives.length != 0) { + window.Viewer.scene.primitives.removeAll(); + } + }, + }); + } } }, mounted() { @@ -2638,7 +2666,9 @@ this.menuChange(res); } }); - + this.$bus.$on("showMenuLayer", ((res) => { + this.setAddLayers(res); + })); this.$store.state.showAllLayers = true; this.$store.state.layerMnage = false; this.$store.state.treeData = null; @@ -2653,6 +2683,9 @@ catch(newVal, oldVal) { this.showModelCatch(); }, + popObj(newVal, oldVal) { + this.showPopBox(); + } }, computed: { Obj() { @@ -2661,6 +2694,9 @@ catch() { return this.$store.state.catModel; }, + popObj() { + return this.$store.state.showPopBoxFlag; + } }, }; </script> -- Gitblit v1.9.3