| | |
| | | </template> |
| | | |
| | | <script> |
| | | import ImageWMS from "ol/source/ImageWMS"; |
| | | import Image from "ol/layer/Image"; |
| | | import GeoJSON from "ol/format/GeoJSON.js"; |
| | | import queryinfo from "./queryinfo.vue"; |
| | | import { Vector as VectorSource } from "ol/source"; |
| | |
| | | data () { |
| | | return { |
| | | isBusy: false, // 正忙 |
| | | lastPrjCode: "", // 最后选择项目编码 |
| | | showProp: false, // 属性 |
| | | shwoHistogram: false, // 钻孔柱状图 |
| | | showLocal: false, // 定位 |
| | |
| | | }, |
| | | }, |
| | | mounted () { |
| | | this.getMenus() |
| | | this.getMenus(); |
| | | this.$bus.$on("treeDataCopy", (res) => { |
| | | this.$store.state.treeData = this.treeData; |
| | | this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys(); |
| | |
| | | addTMSLayers (layers) { |
| | | for (let i in layers) { |
| | | let res = layers[i]; |
| | | let url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : res.url; |
| | | res.url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : res.url; |
| | | |
| | | if (res.pubid) { |
| | | this.setQueryPubid(res); |
| | | this.setTMSLayerByPubid(res); |
| | | continue; |
| | | } |
| | | |
| | | let layer = Viewer.imageryLayers.addImageryProvider(new Cesium.UrlTemplateImageryProvider({ |
| | | url: url, |
| | | url: res.url, |
| | | maximumLevel: 22, |
| | | })); |
| | | layer.id = res.id; |
| | |
| | | tileset._root.transform = matrix; |
| | | // Viewer.flyTo(tileset); |
| | | }, |
| | | async setQueryPubid (res) { |
| | | const data = await comprehensive_selectPubById({ id: res.pubid }) |
| | | if (data.code != 200) { |
| | | // |
| | | } else { |
| | | let url = data.result.url; |
| | | if (res.url.indexOf("{host}") != -1) { |
| | | url = res.url.replace("{host}", iisHost); |
| | | } |
| | | let min = data.result.min; |
| | | let max = data.result.max; |
| | | let layer; |
| | | if (max > 0) { |
| | | layer = Viewer.imageryLayers.addImageryProvider( |
| | | new Cesium.UrlTemplateImageryProvider({ |
| | | url: url, |
| | | minimumLevel: min, |
| | | maximumLevel: max, |
| | | }) |
| | | ); |
| | | } else { |
| | | layer = Viewer.imageryLayers.addImageryProvider( |
| | | new Cesium.UrlTemplateImageryProvider({ |
| | | url: url, |
| | | minimumLevel: min, |
| | | }) |
| | | ); |
| | | } |
| | | // 根据Pubid设置TMS图层 |
| | | async setTMSLayerByPubid (res) { |
| | | const data = await comprehensive_selectPubById({ id: res.pubid }); |
| | | if (!data || data.code != 200) return; |
| | | |
| | | layer.name = res.cnName; |
| | | if (data.result.geom) { |
| | | // let wkt = this.$wkt.parse(data.result.geom); |
| | | // Viewer.camera.flyTo({ |
| | | // destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000), |
| | | // }); |
| | | } |
| | | this.setChangeWMS(); |
| | | } |
| | | let provider = data.result.max > 0 ? |
| | | new Cesium.UrlTemplateImageryProvider({ |
| | | url: res.url, |
| | | minimumLevel: data.result.min, |
| | | maximumLevel: data.result.max |
| | | }) : |
| | | new Cesium.UrlTemplateImageryProvider({ |
| | | url: res.url, |
| | | minimumLevel: data.result.min |
| | | }); |
| | | |
| | | let layer = Viewer.imageryLayers.addImageryProvider(provider); |
| | | layer.name = res.cnName; |
| | | |
| | | // if (data.result.geom) { |
| | | // let wkt = this.$wkt.parse(data.result.geom); |
| | | // Viewer.camera.flyTo({ |
| | | // destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000) |
| | | // }); |
| | | // } |
| | | }, |
| | | // 切换项目 |
| | | async prjChanged (res) { |
| | | prjChanged (code) { |
| | | this.$store.state.pigCode = code; |
| | | if (code) { |
| | | this.isBusy = true; |
| | | let checkedLayers = this.getCheckedLayersByCode(code); |
| | | |
| | | }, |
| | | |
| | | async setproChange (res) { |
| | | if (res) { |
| | | this.setCheeckedLayer = this.$refs.tree.getCheckedKeys(); |
| | | this.$store.state.pigCode = res; |
| | | let st_code = this.menus.filter(rs => { |
| | | if (rs.code == res) { |
| | | return rs |
| | | } |
| | | }) |
| | | |
| | | let val = this.$store.state.oldTree.filter(rs => { |
| | | if (rs.enName == st_code[0].code) { |
| | | return rs |
| | | } |
| | | }) |
| | | this.removeAllLayer(); |
| | | let obj = { |
| | | dirid: res, |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | let checkedKeys = []; |
| | | for (let i in checkedLayers) { |
| | | checkedKeys.push(checkedLayers[i].id); |
| | | } |
| | | |
| | | const data = await project_selectByDirid(obj); |
| | | if (data.code != 200) { |
| | | this.$message.error("列表获取失败"); |
| | | return; |
| | | } |
| | | this.$refs.tree.setCheckedKeys(checkedKeys); |
| | | sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers)); |
| | | this.isBusy = false; |
| | | } |
| | | |
| | | if (data.result[0]) { |
| | | let geom = data.result[0].geom |
| | | if (geom) { |
| | | let wkt = this.$wkt.parse(geom) |
| | | Viewer.camera.flyTo({ |
| | | destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0].toFixed(6), wkt.coordinates[1].toFixed(6), 5000), |
| | | }); |
| | | } |
| | | } |
| | | //this.cannelTerrainLayer(); |
| | | //this.setTerrainMptLayer(); |
| | | //清空图层树选中状态 |
| | | this.$refs.tree.setCheckedKeys([]); |
| | | if (val.length > 0) { |
| | | if (val[0].type == 1 && val[0].isProject == 1) {//项目分类 |
| | | let std_check = []; |
| | | for (let i in val) { |
| | | let std_val = this.getNewTree([this.$refs.tree.getNode(val[i].id).data], []) |
| | | for (let j in std_val) { |
| | | std_check.push(std_val[j]) |
| | | } |
| | | } |
| | | let value = this.$store.state.isProjectLayer; |
| | | for (let i in value) { |
| | | |
| | | std_check.push(value[i]) |
| | | } |
| | | this.setProjectLayer(std_check); |
| | | } else { |
| | | this.setChangeProLayer(); |
| | | } |
| | | } else { |
| | | this.setChangeProLayer(); |
| | | } |
| | | } else { |
| | | this.removeAllLayer(); |
| | | this.$store.state.pigCode = null; |
| | | this.$refs.tree.setCheckedKeys(this.setCheeckedLayer); |
| | | let std = []; |
| | | for (let i in this.setCheeckedLayer) { |
| | | std.push(this.$refs.tree.getNode(this.setCheeckedLayer[i]).data) |
| | | } |
| | | this.setProjectLayer(std); |
| | | for (let i = 0, c = this.treeData.length; i < c; i++) { |
| | | this.handleCheckChange(this.treeData[i], true); |
| | | } |
| | | }, |
| | | removeAllLayer () { |
| | | for (let j in Viewer.scene.primitives._primitives) { |
| | | Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]) |
| | | // 根据项目编码获取选中图层 |
| | | getCheckedLayersByCode (code) { |
| | | let layers = []; |
| | | for (let i = 0, c = this.treeData.length; i < c; i++) { |
| | | this.getCheckedChildLayersByCode(this.treeData[i], code, layers, false); |
| | | } |
| | | for (let i in window.Viewer.dataSources._dataSources) { |
| | | window.Viewer.dataSources.remove( |
| | | window.Viewer.dataSources._dataSources[i] |
| | | ); |
| | | } |
| | | for (let i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { |
| | | let val_id = window.Viewer.imageryLayers._layers[i].id; |
| | | if (val_id == 'TMS') { |
| | | window.Viewer.imageryLayers.remove( |
| | | window.Viewer.imageryLayers._layers[i] |
| | | ); |
| | | } |
| | | } |
| | | for (let i in this.mptLayer) { |
| | | this.mptLayer[i].deleteObject(); |
| | | this.mptLayer.splice(i, 1) |
| | | } |
| | | this.mptLayer = []; |
| | | |
| | | return layers; |
| | | }, |
| | | setProjectLayer (res) { |
| | | let layerid = []; |
| | | for (let j in res) { |
| | | layerid.push(res[j].id) |
| | | } |
| | | this.$refs.tree.setCheckedKeys(layerid); |
| | | // let value = this.$refs.tree.getCheckedNodes(); |
| | | // this.$bus.$emit("showMenuLayer", value); |
| | | let listWMS = []; |
| | | let listWFS = []; |
| | | let listTileset = []; |
| | | let listTMS = []; |
| | | let listMpt = []; |
| | | for (let i in res) { |
| | | if (res[i].type == 2) { |
| | | switch (res[i].serveType) { |
| | | case 'WMS': |
| | | listWMS.push(res[i]) |
| | | break; |
| | | case 'WFS': |
| | | listWFS.push(res[i]) |
| | | break; |
| | | case '3DML': |
| | | case 'Tileset': |
| | | listTileset.push(res[i]) |
| | | break; |
| | | case 'Mpt': |
| | | listMpt.push(res[i]) |
| | | break; |
| | | case 'TMS': |
| | | listTMS.push(res[i]) |
| | | break; |
| | | // 根据项目编码获取选中子图层 |
| | | getCheckedChildLayersByCode (data, code, layers, isPrj) { |
| | | if (data.children && data.children.length) { |
| | | for (let i = 0, c = data.children.length; i < c; i++) { |
| | | let layer = data.children[i]; |
| | | if (layer.children && layer.children.length) { |
| | | let flag = layer.type == 1 && layer.isProject && layer.enName == code; |
| | | this.getCheckedChildLayersByCode(layer, code, layers, flag); |
| | | continue; |
| | | } |
| | | |
| | | if (layer.type == 2 && (layer.isProject || isPrj)) { |
| | | layers.push(layer); |
| | | } |
| | | } |
| | | return; |
| | | } |
| | | // this.setChangeProLayer(); |
| | | this.setChangeWMS(listWMS, true); |
| | | this.setChangeWFS(listWFS, true); |
| | | this.setChangeTileset(listTileset, true); |
| | | this.setChangeTMS(listTMS, true); |
| | | this.setChangeMpt(listMpt, true); |
| | | }, |
| | | getNewTree (obj, result) { |
| | | for (const i in obj) { |
| | | console.log(obj[i].cnName) |
| | | result.push(obj[i]) |
| | | if (obj[i].children && obj[i].children.length > 0) { |
| | | this.getNewTree(obj[i].children, result) |
| | | } |
| | | } |
| | | return result |
| | | }, |
| | | setChangeProLayer () { |
| | | let value = this.$store.state.isProjectLayer; |
| | | if (value.length != 0) { |
| | | |
| | | let std = []; |
| | | for (let i in value) { |
| | | std.push(value[i].id) |
| | | } |
| | | this.$refs.tree.setCheckedKeys(std); |
| | | this.$bus.$emit("showMenuLayer", value); |
| | | if (data.type == 2 && (data.isProject || isPrj)) { |
| | | layers.push(data); |
| | | } |
| | | }, |
| | | // 添加WFS图层 * |