// 优化后的代码如下: sel(a, sele) { if (sele.type === 'dataTable') { ++this.isOpenDetail; this.check(sele); return; } // 判断图层是否是我的图层 if (sele.pname && sele.pname == '我的图层') { this.checkLayer(a, sele); return; } // 处理地雷图斑数据 if (sele.checked && sele.title == '地类图斑') { this.handleThirdPartyLayer(true, sele); } else if (!sele.checked && sele.title == '地类图斑') { this.handleThirdPartyLayer(false, sele); } // 判断是否为模型的数据 if (sele.type && sele.type == 'layer.photography') { this.checkLayer3d(a, sele); return; } // 对选择的数据进行排序处理 针对b if (sele.checked) { //为true 表示选中的 this.addTreeArr([sele]); } else { // 移除数组 判断是移除子节点还是父节点 this.delTreeArr([sele]); this.$bus.emit('closebottom', null); this.bottomClear(); } var tmp = a; //当前已勾选的全部节点 var selects = tmp.filter(item => item.children && item.children.length == 0 && item.checked); var deleteLayers = this.currentSelects.filter(item => !selects.some(sitem => sitem.id == item.id)); var addLayers = selects.filter(item => !this.currentSelects.some(citem => citem.id == item.id)); //取消勾选 if (this.currentSelects.length - selects.length > 0) { this.currentSelects = selects; this.removeLayers(deleteLayers); } else { //添加勾选 this.currentSelects = selects.concat(); this.addLayers(addLayers); } // 移除选中的父节点 a.forEach(item => item.nodeType != '1' && !item.value && (item['value'] = 101)); this.olmap.selecLayers = this.currentArr.filter(item => item.type == 'layer.VectorgeoServeRest' || 'layer.ImageGeoServerTilAndVec' || item.pname == '我的图层'); setStore('menuList', this.currentArr); this.$bus.emit('selectLayer', this.currentArr); }, handleThirdPartyLayer(isAdd, sele) { var thirdPartyLayer = new EarthView.Layer(); if (isAdd) { thirdPartyLayer.addLayer4ArcGIS('arcgisid', { url: sele.url, layers: '0', }); EarthView.getEarth().camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(116.782, 23.3578, 200000), orientation: { heading: Cesium.Math.toRadians(0), pitch: Cesium.Math.toRadians(-60), roll: Cesium.Math.toRadians(0), }, }); } else { thirdPartyLayer.removeLayer('arcgisid'); } }, removeLayers(layers) { var arr = this.olmap.getLayers().array_; for (var i = arr.length - 1; i >= 0; i--) { var layer = arr[i]; var id = layer.get('id'); if (layers.some(item => 'layertree' + item.id == id)) { this.zindex--; this.olmap.removeLayer(layer); } } }, addLayers(layers) { layers.forEach(item => { if (item.url) { this.zindex++; var layer = this.createLayer(item, 'layertree', this.zindex); this.olmap.addLayer(layer); } else if (item.pname == '我的图层') { var layer = this.createLayer(item, 'layertree', this.zindex); this.olmap.addLayer(layer); } }); }

sela sele if seletype === dataTable ++thisisOpenDetail; thischecksele; return; 判断图层是否是我的图层 if selepname && selepname == 我的图层 thischeckLayera sele;

原文地址: https://www.cveoy.top/t/topic/btH3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录