From 1496203eb8194c26ff9350e4673927565df41705 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期四, 23 二月 2023 17:56:56 +0800 Subject: [PATCH] 综合展示图层管理添加3dTilset,资料馆下下调整,综合展示分析功能优化 --- src/views/Tools/LayerTree.vue | 216 +++++++++++++++++++++++++++++------------------------ 1 files changed, 117 insertions(+), 99 deletions(-) diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue index 4d68611..5a06f1b 100644 --- a/src/views/Tools/LayerTree.vue +++ b/src/views/Tools/LayerTree.vue @@ -10,8 +10,8 @@ ref="tree" :data="treeData" node-key="id" - default-expand-all show-checkbox + :props="defaultProps" @node-click="handleLeftclick" @node-contextmenu="rightClick" @check-change="handleCheckChange" @@ -59,7 +59,7 @@ <div class="edit" @click="editNode()"> <i class="el-icon-edit"></i> 閲嶅懡鍚� </div> - <div class="edit" @click="showLayerAttribute()"> + <div class="edit" @click="showLayerAttribute()" v-show="!firstLevel"> <i class="el-icon-tickets"></i> 灞炴�� </div> <!-- <div @@ -89,7 +89,7 @@ <el-select style="width: 100%" :popper-append-to-body="false" - v-model="addFormServer.layerType" + v-model="addFormServer.serveType" placeholder="璇烽�夋嫨" > <el-option @@ -102,14 +102,14 @@ </el-select> </el-form-item> <el-form-item label="鍥惧眰鍚嶇О"> - <el-input v-model="addFormServer.label"></el-input> + <el-input v-model="addFormServer.cnName"></el-input> </el-form-item> <el-form-item label="鏈嶅姟鍚嶇О"> - <el-input v-model="addFormServer.resource"></el-input> + <el-input v-model="addFormServer.url"></el-input> </el-form-item> <el-form-item label="鏈嶅姟鍦板潃"> - <el-input v-model="addFormServer.url"></el-input> + <el-input v-model="addFormServer.resource"></el-input> </el-form-item> <el-form-item label="閫忔槑搴�"> <el-slider v-model="addFormServer.opacity"></el-slider> @@ -155,7 +155,7 @@ dialogVisible: false, addFormServer: { opacity: 100, - layerType: "WMS", + serveType: "WMS", type: 2, }, layerId: [ @@ -167,7 +167,7 @@ treeData: [], defaultProps: { children: "children", - label: "label", + label: "cnName", }, options: [ { @@ -215,10 +215,10 @@ rightClick(event, object, Node, element) { this.currentData = object; this.currentNode = Node; - if (Node.level === 1) { - this.firstLevel = true; - } else { + if (Node.level === 3) { this.firstLevel = false; + } else { + this.firstLevel = true; } this.menuVisible = true; @@ -270,7 +270,7 @@ this.dialogVisible = false; this.addFormServer = { opacity: 100, - layerType: "WMS", + serveType: "WMS", type: 2, }; }, @@ -287,22 +287,33 @@ // 鍒犻櫎鑺傜偣 deleteNode() { this.foo(); - var label = this.currentNode.data.label; - if (this.currentNode.data.layerType == "WMS") { - for (var i in window.Viewer.imageryLayers_layers) { - if (window.Viewer.imageryLayers_layers[i].name === label) { + var label = this.currentNode.data.cnName; + if (this.currentNode.data.serveType == "WMS") { + for (var i in window.Viewer.imageryLayers._layers) { + if ( + window.Viewer.imageryLayers._layers[i].imageryProvider.name === + label + ) { window.Viewer.imageryLayers.remove( - window.Viewer.imageryLayers_layers[i] + window.Viewer.imageryLayers._layers[i] ); } } - } else if (this.currentNode.data.layerType == "WFS") { + } else if (this.currentNode.data.serveType == "WFS") { for (var i in window.Viewer.dataSources._dataSources) { if (window.Viewer.dataSources._dataSources[i].name == label) { window.Viewer.dataSources.remove( window.Viewer.dataSources._dataSources[i] ); - std.push(data.label); + } + } + } else if (this.currentNode.data.serveType == "Tileset") { + for (var i in Viewer.scene.primitives._primitives) { + // Viewer.scene.primitives._primitives[i].show = checked; + if (Viewer.scene.primitives._primitives[i].id == label) { + Viewer.scene.primitives.remove( + Viewer.scene.primitives._primitives[i] + ); } } } @@ -412,20 +423,13 @@ }, handleCheckChange(data, checked, indeterminate) { if (data.type != 2) return; - //鍋氬垽鏂槸鍚︽槸1锛�100涓囪鏀跨晫闈� - if (data.layer == window.XZOutlie && checked) { - window.ImageLayer3.show = false; - } else { - window.ImageLayer3.show = true; - } - var std = []; - if (data.layerType == "WMS") { + if (data.serveType == "WMS") { var layers_ol = window.map.getAllLayers(); for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { var val_id = window.Viewer.imageryLayers._layers[i].imageryProvider.name; - if (val_id == data.label) { + if (val_id == data.cnName) { std.push(data.label); const img_layer = window.Viewer.imageryLayers._layers[i]; @@ -435,18 +439,30 @@ for (var i in layers_ol) { var layerOl = layers_ol[i]; - if (layerOl.values_.name == data.label) { + if (layerOl.values_.name == data.cnName) { layerOl.setVisible(checked); //鏄剧ず鍥惧眰 } } - } else if (data.layerType == "WFS") { + } else if (data.serveType == "WFS") { if (window.Viewer.dataSources._dataSources.length == 0) { this.setAddLayers(data); } else { for (var i in window.Viewer.dataSources._dataSources) { - if (window.Viewer.dataSources._dataSources[i].name == data.label) { + if (window.Viewer.dataSources._dataSources[i].name == data.cnName) { window.Viewer.dataSources._dataSources[i].show = checked; std.push(data.label); + } + } + } + } else if (data.serveType == "Tileset") { + if (Viewer.scene.primitives._primitives.length == 0) { + this.setAddLayers(data); + } else { + for (var i in Viewer.scene.primitives._primitives) { + Viewer.scene.primitives._primitives[i].show = checked; + if (Viewer.scene.primitives._primitives[i].id == data.cnName) { + std.push(res.id); + Viewer.flyTo(Viewer.scene.primitives._primitives[i]); } } } @@ -463,19 +479,17 @@ } }, setAddLayers(res) { - if (res.layerType == "WMS") { - var url = geoServerURl; - if (res.url != null && res.url != undefined) { - url = res.url; + if (res.serveType == "WMS") { + // var resource = geoServerURl; + var resource = "http://192.168.20.205:8088/geoserver/LF/wms"; + + if (res.resource != null && res.resource != undefined) { + resource = res.resource; } - - //var width = $("#mapdiv").width(); - //var height = $("#mapdiv").height(); - var imageryLayers = window.Viewer.scene.imageryLayers; let layerWMS = new Cesium.WebMapServiceImageryProvider({ - url: url, - layers: res.resource, + url: resource, + layers: res.url, parameters: { transparent: true, format: "image/png", @@ -485,21 +499,21 @@ tileWidth: 512, tileHeight: 512, }); - layerWMS.name = res.label; + layerWMS.name = res.cnName; //閫忔槑搴� var tdtAnnoLayer = imageryLayers.addImageryProvider(layerWMS); if (res.opacity) { tdtAnnoLayer.alpha = parseInt(res.opacity) / 100; } var layer2 = new Image({ - name: res.label, + name: res.cnName, source: new ImageWMS({ crossOrigin: "anonymous", - url: url, + url: resource, params: { FORMAT: "image/png", VERSION: "1.1.1", - LAYERS: res.resource, + LAYERS: res.url, }, }), }); @@ -507,11 +521,11 @@ layer2.setOpacity(parseInt(res.opacity) / 100); } window.map.addLayer(layer2); - } else if (res.layerType == "WFS") { + } else if (res.serveType == "WFS") { var url = - res.url + - "?service=WFS&version=1.0.0&request=GetFeature&typeName=" + res.resource + + "?service=WFS&version=1.0.0&request=GetFeature&typeName=" + + res.url + "&outputFormat=application%2Fjson"; $.ajax({ url: url, @@ -526,7 +540,7 @@ clampToGround: true, //鏄惁璐村湴 }); datasource.then((data) => { - data.name = res.label; + data.name = res.cnName; window.Viewer.dataSources.add(data); }); }, @@ -536,71 +550,74 @@ }); var vectorLayer = new VectorLayer({ - name: res.label, + 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; + Viewer.flyTo(tileset); + }); } + }, + setTreeData(source) { + let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 + return cloneData.filter((father) => { + // 寰幆鎵�鏈夐」 + let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁 + branchArr.length > 0 ? (father.children = branchArr) : ""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊� + // 灞炰簬鍚屼竴瀵硅薄闂锛屼緥濡傦細浠� a=b銆乧=1 锛岀劧鍚庡啀浠� b.c=c 锛� 閭d箞 a.c=b.c=c=1 锛涘悓鐞嗭紝鍚庣画浠� c.d=2 ,閭d箞 a.c.d 涔熸槸=2锛� + // 鐢辨寰幆澶氭鍚庯紝灏辫兘褰㈡垚鐩稿簲鐨勬爲褰㈡暟鎹粨鏋� + return father.pid == 0; // 杩斿洖涓�绾ц彍鍗� + }); }, async layersStart() { const data = await perms_selectLayers(); if (data.code != 200) { return this.$message.error("鍥惧眰鍒楄〃鏌ヨ澶辫触"); } - - this.newData = data.result; - this.oriData = data.result; - var std = []; - var layer_list = []; - var layer_groups = []; - for (var i in data.result) { - if (data.result[i].type == 1) { - layer_groups.push({ - id: data.result[i].id, - label: data.result[i].cnName, - type: data.result[i].type, - isEdit: false, - children: [], - }); - } else if (data.result[i].type == 2) { - if (data.result[i].url != null) { - var layer_entity = { - id: data.result[i].id, - pid: data.result[i].pid, - label: data.result[i].cnName, - resource: data.result[i].url, - type: data.result[i].type, - isEdit: false, - layer: data.result[i].enName, - layerType: data.result[i].serveType, - }; - layer_list.push(layer_entity); - - if (data.result[i].isShow == 1) { - std.push(data.result[i].id); - this.setAddLayers(layer_entity); - } - } + var std = data.result; + var that = this; + var checkKey = []; + var val = std.filter((str) => { + if (str.type == 1) { + return str; } - } - - for (var i in layer_list) { - for (var j in layer_groups) { - if (layer_list[i].pid === layer_groups[j].id) { - layer_groups[j].children.push(layer_list[i]); + if (str.url != null && str.type == 2) { + if (str.isShow == 1) { + checkKey.push(str.id); + that.setAddLayers(str); } - } - } - layer_groups = layer_groups.filter((res) => { - if (res.children && res.children.length != 0) { - return res; + return str; } }); - this.treeData = layer_groups; - this.$refs.tree.setCheckedKeys(std); + + var res = this.setTreeData(val); + + for (var i in res) { + res[i].children = res[i].children.filter((val) => { + if (val.children != null) { + return val; + } + }); + } + this.treeData = res; + this.$refs.tree.setCheckedKeys(checkKey); }, async treelayersStart() { const data = await perms_selectLayers(); @@ -700,7 +717,7 @@ } .tree-container /deep/ .el-tree-node__expand-icon { - margin-left: 15px; + margin-left: 1px; padding: 0px; } @@ -710,7 +727,7 @@ .tree-container /deep/ .el-tree-node { position: relative; - padding-left: 16px; + padding-left: 10px; // text-indent: 16px; } @@ -838,6 +855,7 @@ } } } + /*.lalala {*/ /*position: relative;*/ /*}*/ -- Gitblit v1.9.3