|  |  |  | 
|---|
|  |  |  | border-radius: 6px; | 
|---|
|  |  |  | background-color: #999; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .layui-tree-btnGroup .layui-icon { | 
|---|
|  |  |  | display: inline-block; | 
|---|
|  |  |  | color: white | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | 
|---|
|  |  |  | layui.use(['tree'], function () { | 
|---|
|  |  |  | var tree = layui.tree | 
|---|
|  |  |  | isloading = true; | 
|---|
|  |  |  | tree.render({ | 
|---|
|  |  |  | var modelTree = tree.render({ | 
|---|
|  |  |  | elem: '#model-tree-list' | 
|---|
|  |  |  | , data: layerMenu | 
|---|
|  |  |  | , edit: ["del"] | 
|---|
|  |  |  | , showCheckbox: true  //是否显示复选框 | 
|---|
|  |  |  | , id: 'model-tree-list' | 
|---|
|  |  |  | , isJump: false //是否允许点击节点时弹出新窗口跳转 | 
|---|
|  |  |  | 
|---|
|  |  |  | var data = obj.data.ext;  //获取当前点击的节点数据 | 
|---|
|  |  |  | var viewer = parent.viewer; | 
|---|
|  |  |  | var Cesium = parent.Cesium; | 
|---|
|  |  |  | if (type != 'BaseMap' && type != 'Terrain' && type != 'Plotting') { | 
|---|
|  |  |  | if (type != 'BaseMap' && type != 'Terrain' && type != 'Plotting' && type != 'DDE') { | 
|---|
|  |  |  | var model = undefined; | 
|---|
|  |  |  | switch (obj.data.field) { | 
|---|
|  |  |  | case "Primitive": { | 
|---|
|  |  |  | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | case "shpFeature": { | 
|---|
|  |  |  | let path = data.path; | 
|---|
|  |  |  | console.log("shpFeature click"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (model != undefined) { | 
|---|
|  |  |  | viewer.flyTo(model, { | 
|---|
|  |  |  | offset: { | 
|---|
|  |  |  | heading: 0, | 
|---|
|  |  |  | pitch: -90 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }).then(function () { | 
|---|
|  |  |  | // if (obj.data.field == 'Primitive') { | 
|---|
|  |  |  | //     setTimeout(() => { | 
|---|
|  |  |  | //         dptiles(model.root.children); | 
|---|
|  |  |  | //     }, 5000); | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (type == 'DDE') { | 
|---|
|  |  |  | var lon, lat, alt; | 
|---|
|  |  |  | lon = obj.data.lon; | 
|---|
|  |  |  | lat = obj.data.lat; | 
|---|
|  |  |  | alt = obj.data.altitude; | 
|---|
|  |  |  | console.log(lon, lat, alt); | 
|---|
|  |  |  | if (lon != undefined && lat != undefined && alt != undefined) { | 
|---|
|  |  |  | let flyPromise = viewer.camera.flyTo({ | 
|---|
|  |  |  | duration: 3, | 
|---|
|  |  |  | destination: Cesium.Cartesian3.fromDegrees(Number(lon), Number(lat), alt), | 
|---|
|  |  |  | orientation: { | 
|---|
|  |  |  | heading: Cesium.Math.toRadians(0),                          //绕垂直于地心的轴旋转 | 
|---|
|  |  |  | pitch: Cesium.Math.toRadians(-90),      //绕纬度线旋转 | 
|---|
|  |  |  | roll: Cesium.Math.toRadians(0)                                 //绕经度线旋转 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | , oncheck: function (obj) { | 
|---|
|  |  |  | if (isloading) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var ischeck = obj.checked; | 
|---|
|  |  |  | var objData = obj.data; | 
|---|
|  |  |  | var type = objData.field; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (type == "shpFeature") {//如果是 shp图层 | 
|---|
|  |  |  | if(ischeck){ | 
|---|
|  |  |  | let data= obj.data.ext; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let path = data.path; | 
|---|
|  |  |  | let shpArray = JSON.parse(path); | 
|---|
|  |  |  | var shpPromises = []; | 
|---|
|  |  |  | for (let i = 0; i < shpArray.length; i++) { | 
|---|
|  |  |  | shpPromises.push( Cesium.loadBlob(parent.httpConfig.nginxUrl + shpArray[i])); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | shpPromises.push(parent.Cesium.loadBlob(parent.httpConfig.nginxUrl + shpArray[i])); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //判断是否存在 | 
|---|
|  |  |  | let len = parent.viewer.imageryLayers.length; | 
|---|
|  |  |  | if (parent.layerMap.get(obj.data.id) != null) { | 
|---|
|  |  |  | parent.vMsg.warning("图层已经存在无需重复加载"); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var layer = null; | 
|---|
|  |  |  | parent.Cesium.when.all(shpPromises, function (files) { | 
|---|
|  |  |  | for(let i=0;i<shpArray.length;i++){ | 
|---|
|  |  |  | for (let i = 0; i < shpArray.length; i++) { | 
|---|
|  |  |  | files[i].name = shpArray[i]; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var shpProvider = new parent.VectorTileImageryProvider({ | 
|---|
|  |  |  | source: files, | 
|---|
|  |  |  | zIndex: 99, | 
|---|
|  |  |  | zIndex: len, | 
|---|
|  |  |  | removeDuplicate: false, | 
|---|
|  |  |  | defaultStyle: { | 
|---|
|  |  |  | outlineColor: "rgb(255,0,0)", | 
|---|
|  |  |  | fillColor: "rgba(255,0,0,0.6)", | 
|---|
|  |  |  | outlineColor: data.color, | 
|---|
|  |  |  | fillColor: data.color, | 
|---|
|  |  |  | lineWidth: 1, | 
|---|
|  |  |  | fill: false, | 
|---|
|  |  |  | tileCacheSize: 200, | 
|---|
|  |  |  | 
|---|
|  |  |  | simplify: false | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | shpProvider.readyPromise.then(function () { | 
|---|
|  |  |  | layer = parent.viewer.imageryLayers.addImageryProvider(shpProvider); | 
|---|
|  |  |  | parent.layerMap.set(obj.data.id, len); | 
|---|
|  |  |  | layer = parent.viewer.imageryLayers.addImageryProvider(shpProvider, len); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | parent.viewer.flyTo(layer); | 
|---|
|  |  |  | parent.Cesium.Camera.DEFAULT_VIEW_RECTANGLE = shpProvider.rectangle; | 
|---|
|  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }else{//移除shp | 
|---|
|  |  |  | var id = obj.data.id; | 
|---|
|  |  |  | var index = parent.layerMap.get(id); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | parent.viewer.imageryLayers.remove(parent.viewer.imageryLayers.get(index),true); | 
|---|
|  |  |  | parent.layerMap.delete(id); | 
|---|
|  |  |  | for(let key of  parent.layerMap.keys()){//数组的游标-1 | 
|---|
|  |  |  | if( parent.layerMap.get(key)>index){ | 
|---|
|  |  |  | parent.layerMap.set(key, parent.layerMap.get(key)-1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (model != undefined) { | 
|---|
|  |  |  | viewer.flyTo(model, { | 
|---|
|  |  |  | offset: { | 
|---|
|  |  |  | heading: 0, | 
|---|
|  |  |  | pitch: -90 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }).then(function () { | 
|---|
|  |  |  | // if (obj.data.field == 'Primitive') { | 
|---|
|  |  |  | //     setTimeout(() => { | 
|---|
|  |  |  | //         dptiles(model.root.children); | 
|---|
|  |  |  | //     }, 5000); | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | , oncheck: function (obj) { | 
|---|
|  |  |  | if (isloading) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var ischeck = obj.checked; | 
|---|
|  |  |  | var objData = obj.data; | 
|---|
|  |  |  | var type = objData.field; | 
|---|
|  |  |  | if (type != 'BaseMap' && type != 'Terrain' && type != 'Plotting') { | 
|---|
|  |  |  | //changeChecked(ischeck, parent.getNodeById(objData.id)); | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | 
|---|
|  |  |  | let result = modelType == 'Primitive' ? parent.delprimitiveModel(modelId) : parent.delentityModel(modelId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | parent.delNodeById(modelId, layerMenu); | 
|---|
|  |  |  | delDrawEntity(modelId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 
|---|
|  |  |  | changeParentChecked(ischeck, parentOfData); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //zzf:隐藏除绘图菜单以外的删除按钮 | 
|---|
|  |  |  | $(modelTree.config.elem[0].children[0].childNodes).each(function () { | 
|---|
|  |  |  | let parentDiv = $(this)[0].childNodes[0]; | 
|---|
|  |  |  | $(parentDiv).find("div .layui-icon-delete").remove(); | 
|---|
|  |  |  | if ($(this)[0].dataset.id != "4") { | 
|---|
|  |  |  | let childrenDiv = $(this)[0].childNodes[1]; | 
|---|
|  |  |  | $(childrenDiv).find("div .layui-icon-delete").remove(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | function delDrawEntity(modelId) { | 
|---|
|  |  |  | let updateData = { | 
|---|
|  |  |  | "ids": modelId, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | let token = window.localStorage.getItem("token"); | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | type: "post", | 
|---|
|  |  |  | async: false, | 
|---|
|  |  |  | url: parent.httpConfig.webApiUrl + "landstamp/front/removeDrawEntity", | 
|---|
|  |  |  | data: updateData, | 
|---|
|  |  |  | contentType: "application/x-www-form-urlencoded", | 
|---|
|  |  |  | beforeSend: function (request) { | 
|---|
|  |  |  | request.setRequestHeader("token", token); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | success: function (data) { | 
|---|
|  |  |  | console.log(data) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | error: function (XMLHttpRequest, textStatus, errorThrown) { | 
|---|
|  |  |  | console.log("ajax请求失败!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | request.setRequestHeader("token", token); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | success: function (data) { | 
|---|
|  |  |  | layerMenu.push(data); | 
|---|
|  |  |  | if (parent.getRootById(data.id) == null) { | 
|---|
|  |  |  | data.isloading = false; | 
|---|
|  |  |  | layerMenu.push(data); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | error: function (XMLHttpRequest, textStatus, errorThrown) { | 
|---|
|  |  |  | console.log(errorThrown); | 
|---|