From 0f0d87ffbe149d47342d2bf5d5e9ae6ce130c901 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期四, 20 十月 2022 09:44:05 +0800
Subject: [PATCH] 综合展示

---
 src/views/Synthesis/analyse.vue |  218 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 209 insertions(+), 9 deletions(-)

diff --git a/src/views/Synthesis/analyse.vue b/src/views/Synthesis/analyse.vue
index e676895..719a398 100644
--- a/src/views/Synthesis/analyse.vue
+++ b/src/views/Synthesis/analyse.vue
@@ -12,15 +12,25 @@
         <div class="div_li">{{ $t(item.name) }}</div>
       </li>
     </ul>
+    <mapinfo ref="mapinfo" />
   </div>
 </template>
 
 <script>
+// 娴嬮噺-淇℃伅寮圭獥
+import mapinfo from '../Tools/mapinfo.vue';
 export default {
+  components: {
+    mapinfo,
+  },
   data() {
     return {
+      changeAnalsyFlag: null,
       isoline: null,
       isolineFlag: false,
+      isslopeFlag: false,
+      isslopeType: null,
+      dxpmIndex: null,
       itemsOne: [
         {
           id: '1',
@@ -65,25 +75,215 @@
       ],
     };
   },
-  mounted() {
-    if (this.isoline == null) {
-      this.isoline = new SmartEarth.ElevationTool(sgworld);
-    }
-  },
+
   methods: {
     changeAnalsy(res) {
+      var that = this;
       switch (res.id) {
         case '1':
-          this.isolineFlag = !this.isolineFlag;
-          this.isoline.tf = this.isolineFlag;
-          this.isoline.render();
+          that.isolineFlag = !that.isolineFlag;
+          elevationTool.tf = that.isolineFlag;
+          elevationTool.render();
           break;
         case '2':
-          elevationTool.type = 'slope';
+          that.isslopeFlag = !that.isslopeFlag;
+          if (that.isslopeFlag == true) {
+            elevationTool.type = 'slope';
+          } else {
+            elevationTool.type = 'none';
+          }
           elevationTool.render();
+          break;
+        case '4':
+          if (window.AnalysisDXPM) {
+            this.clear(res.id);
+          } else {
+            this.addterrainSectionAnalysis();
+          }
+          break;
+        case '5':
+          if (window.AnalysisFlood) {
+            this.clear(res.id);
+          } else {
+            this.addAnalysisFlood();
+          }
+          break;
+        case '6':
+          var that = this;
+          var volumetricMeasurementTool =
+            sgworld.Creator.createVolumetricMeasureTool();
+          volumetricMeasurementTool.startDrawing(
+            { ...this.colorAll, onlyTerrain: false },
+            'auto',
+            (data) => {
+              if (volumetricMeasurementTool.popupData) {
+                volumetricMeasurementTool.popupData.value = `濉柟锛�${
+                  data.volume.fill.toFixed(4) + data.unit.fill
+                }<br>鎸栨柟锛�${data.volume.dig.toFixed(4) + data.unit.dig}`;
+              } else {
+                data.id = sgworld.Core.getuid();
+                this.measureData.set(data.id, volumetricMeasurementTool);
+                let popupData = that.openMeasureResultInfo('浣撶Н鏂归噺', data);
+                volumetricMeasurementTool.popupData = popupData;
+              }
+            }
+          );
+          break;
+        case '7':
+          window.model = null;
+          var url =
+            'http://183.162.245.49:8099/pcdata/JC_MAX_MX/SN/tileset.json';
+          model = sgworld.Creator.create3DTilesets(
+            '',
+            url,
+            { height: 670 },
+            {},
+            '0',
+            true,
+            (data) => {
+              sgworld.Navigate.flyToObj(data);
+            }
+          );
+          setTimeout(() => {
+            model.clippingModel({
+              direction: 'x',
+            });
+          }, 5000);
+          break;
+        case '8':
+          if (openStreetMap.item.show == false) {
+            openStreetMap.item.show = true;
+            sgworld.Analysis.createCurtainContrast(0, 1);
+          } else {
+            openStreetMap.item.show = false;
+            sgworld.Analysis.clearCurtainContrast();
+          }
           break;
       }
     },
+    clear(res) {
+      switch (res) {
+        case '4':
+          layer.close(this.dxpmIndex);
+          this.dxpmIndex = undefined;
+          if (window.AnalysisDXPM) {
+            window.AnalysisDXPM.flyPoint &&
+              Viewer.entities.remove(window.AnalysisDXPM.flyPoint);
+            window.AnalysisDXPM && window.AnalysisDXPM.deleteObject();
+            window.AnalysisDXPM = undefined;
+          }
+          break;
+        case '5':
+          window.AnalysisFlood && window.AnalysisFlood.endWater();
+          window.AnalysisFlood = undefined;
+
+          break;
+      }
+    },
+    openMeasureResultInfo(name, data) {
+      let info = '';
+      switch (name) {
+        case '姘村钩璺濈':
+        case '绌洪棿璺濈':
+          info = '鎬婚暱搴︼細' + data.distance[data.distance.length - 1];
+          break;
+        case '娴锋嫈楂樺害':
+          info = '娴锋嫈锛�' + data.height;
+          break;
+        case '鍨傜洿楂樺害':
+          info = `${data.gddistance}<br>${data.kjdistance}<br>${data.spdistance}`;
+          break;
+        case '琛ㄩ潰闈㈢Н':
+        case '骞抽潰闈㈢Н':
+          info = data.mj;
+          break;
+        case '瑙掑害':
+          data.labels.forEach((label) => {
+            info += label.label.text.getValue() + '<br>';
+          });
+          break;
+        case '浣撶Н鏂归噺':
+          info = `濉柟锛�${
+            data.volume.fill.toFixed(4) + data.unit.fill
+          }<br>鎸栨柟锛�${data.volume.dig.toFixed(4) + data.unit.dig}`;
+          break;
+      }
+      return (
+        this.$refs &&
+        this.$refs.mapinfo &&
+        this.$refs.mapinfo.open(name, info, {
+          close: () => {
+            // 娓呴櫎娴嬮噺
+            this.clearMeasure(data.id);
+          },
+        })
+      );
+    },
+    clearMeasure(id) {
+      if (id) {
+        let data = this.measureData.get(id);
+        data && data.deleteObject && data.deleteObject();
+        // 浣撶Н鏂归噺
+        data && data.cleanUp && data.cleanUp();
+        this.measureData.delete(id);
+      } else {
+        this.measureData.forEach((data) => {
+          data.deleteObject && data.deleteObject();
+          // 浣撶Н鏂归噺
+          data.cleanUp && data.cleanUp();
+        });
+        this.measureData.clear();
+      }
+    },
+    addterrainSectionAnalysis() {
+      window.AnalysisDXPM = sgworld.Command.execute(
+        2,
+        6,
+        { cyjj: 50, objid: 0 },
+        (Distance) => {
+          if (Distance.gcs && Distance.gcs.length) {
+            window.AnalysisDXPM.analyseData = Distance;
+            this.dxpmIndex = layer.open({
+              type: 2,
+              title: '鍒嗘瀽缁撴灉',
+              shade: false,
+              area: ['80%', '280px'],
+              offset: 'b',
+              skin: 'other-class',
+              content: '/SmartEarthSDK/Workers/analysis/AnalysisDXPM.html',
+              end: () => {
+                this.dxpmIndex && this.clear('4');
+              },
+            });
+          } else {
+            //鍓栭潰
+            window.AnalysisDXPM && window.AnalysisDXPM.deleteObject();
+          }
+        }
+      );
+    },
+    addAnalysisFlood() {
+      var method = {
+        pointSelect: true,
+        spood: 20,
+        GroupID: 0,
+        url: '/SmartEarthSDK/Workers/image/waterNormals.jpg',
+      };
+      window.AnalysisFlood = sgworld.Command.execute(
+        2,
+        2,
+        method,
+        (value) => {}
+      );
+    },
+  },
+  mounted() {
+    this.measureData = new Map();
+    this.colorAll = {
+      point: Cesium.Color.fromCssColorString('#ff0000'),
+      polyline: Cesium.Color.fromCssColorString('#ffff00').withAlpha(0.6),
+      polygon: Cesium.Color.fromCssColorString('#ffff00').withAlpha(0.6),
+    };
   },
 };
 </script>

--
Gitblit v1.9.3