From c2a6c53657baaf0830cd881e1a23a15af23ac6fa Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期四, 21 九月 2023 18:35:14 +0800 Subject: [PATCH] 代码更新 --- src/components/preview_map.vue | 153 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 148 insertions(+), 5 deletions(-) diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue index 2060f0b..0f9b5bd 100644 --- a/src/components/preview_map.vue +++ b/src/components/preview_map.vue @@ -43,6 +43,10 @@ <el-form-item> <el-button size="small" + @click="dialogLayerVisible = true" + >鍥惧眰</el-button> + <el-button + size="small" v-if="$store.state.previewLayer.type == 'mpt'" @click="setcropping" >瑁佸壀</el-button> @@ -56,11 +60,13 @@ v-if="$store.state.previewLayer.type != 'mpt'" @click="showTileset" >鏄鹃殣</el-button> + <el-button size="small" v-if="$store.state.previewLayer.type != 'mpt'" @click="setUndergroundMode" >鍦颁笅</el-button> + <br /> <el-button v-if="$store.state.previewLayer.type != '3dml' && $store.state.previewLayer.type != 'cpt' && @@ -373,6 +379,40 @@ </div> </el-dialog> + + <div + v-show="dialogLayerVisible" + class="levelLayer box_divm" + > + <div class="levelTitle"> + <div> + 鍥惧眰鍒楄〃 + </div> + <div @click="dialogLayerVisible = false"> + <i class="el-icon-close"></i> + </div> + </div> + <div class="layerContent"> + <div + v-for="(item,index) in layerTree" + class="contLayer" + > + <div> <el-checkbox + v-model="item.checked" + @change="setLayerTreeChange(item)" + >{{item.cnName}}</el-checkbox></div> + <div> + + <el-button + icon="el-icon-map-location" + size="mini" + @click="setLayerTreeLocation(item)" + ></el-button> + </div> + </div> + </div> + + </div> <div v-show="modelKeyFlag" class="modelLayer box_divm" @@ -417,6 +457,7 @@ <i class="el-icon-tickets"></i> 闄勪欢 </div> </el-card> + </div> </template> @@ -454,6 +495,7 @@ }, childOption: [], dialogVisible: false, + dialogLayerVisible: false, isShowModel: false, tableData: [], formInline: { @@ -525,13 +567,87 @@ menuVisible: false, rightClickMenuStyle: {}, // 鍙抽敭鑿滃崟鏍峰紡 serveType: true, - layerData: "lf.sys_style" + layerData: "lf.sys_style", + layerTree: null } }, mounted() { this.init3DMap(); + this.getLayers(); }, methods: { + async getLayers() { + const data = await perms_selectLayers(); + if (data.code != 200) { + return this.$message.error("鍥惧眰鍒楄〃鏌ヨ澶辫触"); + } + + var layer = data.result.filter(res => { + if (res.type == 2) { + if (res.serveType == 'WMTS' || res.serveType == 'TMS') { + res.checked = false; + return res + } + } + }) + this.layerTree = layer + }, + setLayerTreeChange(res) { + if (res.checked) { + this.setAddTreeLayers(res) + } else { + this.setRemoveTreeLayers(res) + } + }, + async setLayerTreeLocation(res) { + if (res.pubid) { + let data = await comprehensive_selectPubById({ id: res.pubid }); + if (data.result && data.result.geom) { + let wkt = this.$wkt.parse(data.result.geom); + let height = this.getHeight(wkt.coordinates[2]); + Viewer.camera.flyTo({ + destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], sceneConfig.extureHeight), // 2000 + }); + } + } + }, + async setAddTreeLayers(res) { + var url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : res.url; + + var layer = Viewer.imageryLayers.addImageryProvider( + new Cesium.UrlTemplateImageryProvider({ + url: url, + maximumLevel: 18, + }) + ); + layer.name = res.cnName + '_' + res.id + }, + setRemoveTreeLayers(res) { + var name = res.cnName + '_' + res.id; + var layers = Viewer.imageryLayers._layers; + for (var i in layers) { + if (layers[i].name == name) { + Viewer.imageryLayers.remove(layers[i]) + } + } + }, + setTreeData(source) { + let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 + return cloneData.filter((father) => { + // 寰幆鎵�鏈夐」 + let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁 + if (branchArr.length > 0) { + branchArr.sort(function (a, b) { + + return a.orderNum - b.orderNum + }) + } + 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; // 杩斿洖涓�绾ц彍鍗� + }); + }, // 榧犳爣鍙冲嚮浜嬩欢 rightClick(event, object, node, element) { if (object.type == 1 || node.data.children != null) return; @@ -1154,6 +1270,7 @@ if (this.$store.state.previewLayer) { var res = this.$store.state.previewLayer; var type = res.type; + console.log(type) res.ulr = res.url.replace("{host}", iisHost); if (type == 'DEM') { window.terrainLayer.deleteObject(); @@ -1253,8 +1370,8 @@ }, async resave() { - - if (this.$store.state.previewLayer.type != "mpt") { + var type = this.$store.state.previewLayer.type; + if (type && type != "mpt" && type != "mpt") { if (!this.modelForm.modelid) { return this.$message('鏈�夋嫨妯″瀷涓婚敭ID'); } @@ -1280,7 +1397,7 @@ this.reload(); }, reload() { - debugger + sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha) var json = JSON.stringify(this.modelForm); var modelScale = this.modelForm.scale @@ -1577,7 +1694,8 @@ if (level > 0 && level < 23) { return this.levelArray[level] } - return this.levelArray[this.levelArray.length - 1] + var res = 7 + return this.levelArray[res] }, }, @@ -1606,6 +1724,31 @@ } } + .levelLayer { + position: absolute; + z-index: 40; + padding: 10px 20px; + max-height: 450px; + overflow: auto; + border: 1px solid #409eff; + top: 20%; + left: 50%; + transform: translate(-50%, 0%); + .levelTitle { + width: 100%; + display: flex; + justify-content: space-between; + font-size: 16px; + font-family: Source Han Sans CN; + } + .contLayer { + margin: 10px 0px; + font-size: 14px; + font-family: Source Han Sans CN; + display: flex; + justify-content: space-between; + } + } .pdfClass { height: 70vh; width: 100%; -- Gitblit v1.9.3