Ver Fonte

解决压平功能只能在单独点击倾斜的情况下对倾斜进行压平

lkk há 19 horas atrás
pai
commit
65877fabb4

+ 18 - 18
src/components/3DAnalysis/Smashing/Smashing.vue

@@ -113,18 +113,17 @@ export default {
           }
         }
         viewer.scene.globe.removeAllExcavationRegion();
-        let s3mLayers = store.state.tempLatData[0];
-        //遍历所有s3m图层,设置压平
-        for (var i = 0; i < s3mLayers.length; i++) {
-          let nameStr = "flatten" + new Date().getTime(); //创建唯一名称
-          //倾斜影像压平处理
-          s3mLayers[i].addFlattenRegion({
-            position: positions,
-            name: nameStr,
+
+        store.state.tempLatData.forEach((layers, layerIndex) => {
+          layers[0].forEach((s3mLayer, s3mIndex) => {
+            let nameStr = `flatten${new Date().getTime()}_${layerIndex}_${s3mIndex}`;
+            s3mLayer.addFlattenRegion({
+              position: positions,
+              name: nameStr,
+            });
+            that.flattenNames.push(nameStr);
           });
-          //推送压平实体名称
-          that.flattenNames.push(nameStr);
-        }
+        });
         positions = [];
         that.handler_Cut_fill.polygon.show = false;
         that.handler_Cut_fill.polyline.show = false;
@@ -143,13 +142,14 @@ export default {
       }
 
       if (this.flattenNames.length) {
-        //图层数据
-        let layersData = store.state.tempLatData[0];
-        //遍历所有s3m图层,删除压平
-        for (var i = 0; i < layersData.length; i++) {
-          layersData[i].removeFlattenRegion(this.flattenNames[i]);
-          // this.flattenNames.push(nameStr);
-        }
+        // 遍历所有已勾选的图层,删除压平区域
+        store.state.tempLatData.forEach((layers) => {
+          layers[0].forEach((s3mLayer) => {
+            that.flattenNames.forEach((name) => {
+              s3mLayer.removeFlattenRegion(name);
+            });
+          });
+        });
         this.flattenNames = [];
       }
     },

+ 27 - 1
src/components/Combinations/LayerManage/LayerManage.vue

@@ -61,6 +61,8 @@ export default {
       // },
       contextData: null,
       S3MList: [],
+      allLayers: [],
+      allCheckedLayers: [],
     };
   },
   computed: {
@@ -257,7 +259,21 @@ export default {
           // if (sceneName) {
           //   this.flyTo(sceneName);
           // }
+          const exists = this_.allCheckedLayers.some(
+            (item) => item.title === obj.title
+          );
+          if (!exists) {
+            this_.allCheckedLayers.push({
+              title: obj.title,
+              layers: layers,
+            });
+          }
+          // 更新store为所有图层数组
+          store.state.tempLatData = this_.allCheckedLayers.map(
+            (item) => item.layers
+          );
 
+          store.setSceneLayersList(this_.sceneLayers);
           if (obj.url.indexOf("3D-HeBing8HaoLou") > 0) {
             store.setLayerList(layers[0][0]);
             layers[0][0].setQueryParameter({
@@ -272,7 +288,7 @@ export default {
             // layers[0][0].indexedDBSetting.isAttributesSave = true;
           }
           // store.state.S3MList.push(layers[0]);
-          store.state.tempLatData = layers;
+          // store.state.tempLatData = layers;
           layers[0].forEach((item) => {
             item.RGBTOBGR = true;
             if (obj.title == "倾斜摄影") {
@@ -459,6 +475,16 @@ export default {
           this.bus.$emit("setShareResources", obj, obj.checked, -2, true);
         }
       } else {
+        let index = this.allCheckedLayers.findIndex(
+          (item) => item.title === obj.title
+        );
+        if (index !== -1) {
+          this.allCheckedLayers.splice(index, 1);
+          // 更新store
+          store.state.tempLatData = this.allCheckedLayers.map(
+            (item) => item.layers
+          );
+        }
         if (obj.title.indexOf("雨水") > -1 || obj.title.indexOf("管线") > -1) {
           this.bus.$emit("setnUderground", obj.checked);
         }