| | |
| | | v-show="shwoHistogram"> |
| | | <i class="el-icon-tickets"></i> 钻孔柱状图 |
| | | </div> |
| | | <div class="edit" |
| | | v-show="shwoTileDown" |
| | | @click="tileDownload()"> |
| | | <i class="el-icon-download"></i> 瓦片下载 |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </template> |
| | |
| | | import queryinfo from "./queryinfo.vue"; |
| | | import { Vector as VectorSource } from "ol/source"; |
| | | import { Vector as VectorLayer } from "ol/layer"; |
| | | import { perms_selectLayers, comprehensive_selectPubById, project_selectDirAll, project_selectByDirid, } from "../../api/api.js"; |
| | | import { perms_selectLayers, comprehensive_selectPubById, project_selectDirAll } from "../../api/api.js"; |
| | | |
| | | export default { |
| | | name: "tree", |
| | |
| | | shwoHistogram: false, // 钻孔柱状图 |
| | | showLocal: false, // 定位 |
| | | showOpacity: false, // 不透明度 |
| | | shwoTileDown: false, // 瓦片下载 |
| | | menuVisible: false, // 菜单 |
| | | levelArray: [ // 高程数组 |
| | | 0, 40000000, 20000000, 10000000, 5000000, 2000000, 1000000, 500000, |
| | |
| | | "m_sitepoint", |
| | | ], |
| | | treeData: [], // 树数据 |
| | | sourceData: [], // 源数据 |
| | | defaultProps: { // 默认属性值 |
| | | children: "children", |
| | | label: "cnName", |
| | |
| | | }); |
| | | // 存储选中图层 |
| | | this.treeData = this.setTreeData(layers); |
| | | this.sourceData = JSON.parse(JSON.stringify(this.treeData)); |
| | | this.$refs.tree.setCheckedKeys(checkKey); |
| | | sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers)); |
| | | }, |
| | | // 设置树数据 |
| | | setTreeData (source) { |
| | | let cloneData = JSON.parse(JSON.stringify(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) : ""; // 给父级添加一个children属性,并赋值 |
| | | // 属于同一对象问题,例如:令 a=b、c=1 ,然后再令 b.c=c ,那么 a.c=b.c=c=1 ;同理,后续令 c.d=2 ,那么 a.c.d 也是=2; |
| | | return father.pid == 0; // 返回一级菜单 |
| | | });*/ |
| | | |
| | | let arr = []; |
| | | let data = JSON.parse(JSON.stringify(source)); |
| | | this.setTreeChildData(data, arr, 0); |
| | | |
| | | return arr; |
| | | }, |
| | | // 设置树子节点数据 |
| | | setTreeChildData (data, arr, pid) { |
| | | let i = 0; |
| | | while (i < data.length) { |
| | | let d = data[i]; |
| | | if (d.pid == pid) { |
| | | arr.push(d); |
| | | data.splice(i, 1); |
| | | continue; |
| | | } |
| | | |
| | | i++; |
| | | } |
| | | |
| | | arr.sort(function (a, b) { |
| | | return a.orderNum - b.orderNum; |
| | | }); |
| | | |
| | | for (let i in arr) { |
| | | let children = []; |
| | | this.setTreeChildData(data, children, arr[i].id); |
| | | if (children.length) arr[i].children = children; |
| | | } |
| | | }, |
| | | // 节点获得焦点事件 |
| | | nodeBlur (node, data) { |
| | |
| | | this.shwoHistogram = this.showProp && object.enName == "s_explorationpoint"; // 钻孔柱状图 |
| | | this.showLocal = ["Tileset", "3DML", "Mpt", "TMS", "DOM", "DEM"].indexOf(object.serveType) > -1; // 定位 |
| | | this.showOpacity = ["Tileset", "3DML"].indexOf(object.serveType) > -1; // 不透明度 |
| | | this.menuVisible = this.showProp || this.shwoHistogram || this.showLocal || this.showOpacity; // 菜单 |
| | | this.shwoTileDown = ["TMS", "DOM"].indexOf(object.serveType) > -1 && object.pubid; // 瓦片下载 |
| | | this.menuVisible = this.showProp || this.shwoHistogram || this.showLocal || this.showOpacity || this.shwoTileDown; // 菜单 |
| | | |
| | | this.$refs.card.$el.style.left = event.pageX + 20 + "px"; |
| | | this.$refs.card.$el.style.top = event.pageY + "px"; |
| | |
| | | |
| | | return this.levelArray[this.levelArray.length - 1]; |
| | | }, |
| | | // 瓦片下载 |
| | | tileDownload () { |
| | | this.rmListener(); |
| | | |
| | | var that = this; |
| | | sgworld.Creator.createSimpleGraphic( |
| | | "rectangle", {}, |
| | | function (entity) { |
| | | that.getTileRectangle(entity); |
| | | sgworld.Creator.SimpleGraphic.clear(); |
| | | } |
| | | ); |
| | | }, |
| | | // 获取瓦片四至范围 |
| | | getTileRectangle (res) { |
| | | var value = res.rectangle.coordinates.getValue(); |
| | | var val = { |
| | | pubid: this.currentData.pubid, |
| | | pwd: "", |
| | | title: "", |
| | | xmax: Cesium.Math.toDegrees(value.east), |
| | | xmin: Cesium.Math.toDegrees(value.west), |
| | | ymax: Cesium.Math.toDegrees(value.north), |
| | | ymin: Cesium.Math.toDegrees(value.south) |
| | | } |
| | | this.$bus.$emit("titleDown", val); |
| | | }, |
| | | // 图层选中事件 |
| | | handleCheckChange (data, checked) { |
| | | if (this.isBusy) return; |
| | |
| | | } |
| | | } |
| | | |
| | | this.setChangeDEM(obj.DEM, checked); |
| | | if (obj.TMS.length) this.setChangeDEM(obj.DEM, checked); |
| | | if (obj.TMS.length) this.setChangeTMS(obj.TMS, checked); |
| | | if (obj.Mpt.length) this.setChangeMpt(obj.Mpt, checked); |
| | | if (obj.Tileset.length) this.setChangeTileset(obj.Tileset, checked); |
| | |
| | | let layer = Viewer.imageryLayers.addImageryProvider(new Cesium.UrlTemplateImageryProvider({ |
| | | url: res.url, |
| | | maximumLevel: 22, |
| | | })); |
| | | enablePickFeatures: false |
| | | }), 1); |
| | | layer.id = res.id; |
| | | layer.name = res.cnName; |
| | | } |
| | |
| | | }, |
| | | // 切换DEM |
| | | setChangeDEM (layers, checked) { |
| | | debugger |
| | | let ids = this.getCheckNodesIds(), arr = []; |
| | | for (let i in layers) { |
| | | let layer = layers[i]; |
| | |
| | | } |
| | | |
| | | const data = await comprehensive_selectPubById({ id: res.pubid }) |
| | | if (data.code == 200) this.setTilesetCoord(tileset, data.result.json); |
| | | if (data.code == 200 && data.result.json) this.setTilesetCoord(tileset, data.result.json); |
| | | }, |
| | | // 设置Tileset高度 |
| | | setTilesetHeigth (tileset, height) { |
| | |
| | | new Cesium.UrlTemplateImageryProvider({ |
| | | url: res.url, |
| | | minimumLevel: data.result.min, |
| | | maximumLevel: data.result.max |
| | | maximumLevel: data.result.max, |
| | | enablePickFeatures: false |
| | | }) : |
| | | new Cesium.UrlTemplateImageryProvider({ |
| | | url: res.url, |
| | | minimumLevel: data.result.min |
| | | minimumLevel: data.result.min, |
| | | enablePickFeatures: false |
| | | }); |
| | | |
| | | let layer = Viewer.imageryLayers.addImageryProvider(provider); |
| | | let layer = Viewer.imageryLayers.addImageryProvider(provider, 1); |
| | | layer.name = res.cnName; |
| | | |
| | | // if (data.result.geom) { |
| | |
| | | // 切换项目 |
| | | prjChanged (code) { |
| | | this.$store.state.pigCode = code; |
| | | if (code) { |
| | | this.isBusy = true; |
| | | let checkedLayers = this.getCheckedLayersByCode(code); |
| | | //if (code) { |
| | | this.isBusy = true; |
| | | let checkedLayers = this.getCheckedLayersByCode(code); |
| | | |
| | | let checkedKeys = []; |
| | | for (let i in checkedLayers) { |
| | | checkedKeys.push(checkedLayers[i].id); |
| | | } |
| | | |
| | | this.$refs.tree.setCheckedKeys(checkedKeys); |
| | | sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers)); |
| | | this.isBusy = false; |
| | | let checkedKeys = []; |
| | | for (let i in checkedLayers) { |
| | | checkedKeys.push(checkedLayers[i].id); |
| | | } |
| | | |
| | | this.treeData = this.getNewTreeData(code); |
| | | this.$store.state.treeData = this.treeData; |
| | | this.$refs.tree.setCheckedKeys(checkedKeys); |
| | | sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers)); |
| | | this.isBusy = false; |
| | | //} |
| | | |
| | | for (let i = 0, c = this.treeData.length; i < c; i++) { |
| | | this.handleCheckChange(this.treeData[i], true); |
| | |
| | | continue; |
| | | } |
| | | |
| | | if (layer.type == 2 && (layer.isProject || isPrj)) { |
| | | layers.push(layer); |
| | | //if (layer.type == 2 && (layer.isProject || isPrj)) { |
| | | // layers.push(layer); |
| | | //} |
| | | if (code) { |
| | | if (layer.type == 2 && (layer.isProject || isPrj)) layers.push(layer); |
| | | } else { |
| | | if (layer.isShow) layers.push(layer); |
| | | } |
| | | } |
| | | return; |
| | |
| | | layers.push(data); |
| | | } |
| | | }, |
| | | // 获取新树数据 |
| | | getNewTreeData (code) { |
| | | if (!code) return this.sourceData; |
| | | |
| | | let data = JSON.parse(JSON.stringify(this.sourceData)); |
| | | this.setSubTreeData(data, code); |
| | | |
| | | return data; |
| | | }, |
| | | // 设置树数据子节点 |
| | | setSubTreeData (data, code) { |
| | | let j = 0; |
| | | while (j < data.length) { |
| | | let d = data[j]; |
| | | if (d.type == 1 && d.isProject && d.enName != code) { |
| | | data.splice(j, 1); |
| | | continue; |
| | | } |
| | | |
| | | j++; |
| | | } |
| | | |
| | | for (let i = 0, c = data.length; i < c; i++) { |
| | | if (data[i].children && data[i].children.length) { |
| | | this.setSubTreeData(data[i].children, code); |
| | | } |
| | | } |
| | | }, |
| | | // 添加WFS图层 * |
| | | addWFSLayers (res) { |
| | | let url = |