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

---
 src/components/mapsdk.vue |  245 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 226 insertions(+), 19 deletions(-)

diff --git a/src/components/mapsdk.vue b/src/components/mapsdk.vue
index 9730a8c..3d51d8e 100644
--- a/src/components/mapsdk.vue
+++ b/src/components/mapsdk.vue
@@ -1,50 +1,230 @@
 <template>
-  <div id="mapdiv"></div>
+  <div id="mapdiv" class="mapdiv">
+    <div class="bufferBox" v-if="showBufferBoxDialog">
+      <el-card class="box-card">
+        <div slot="header" class="clearfix">
+          <span>缂撳啿鍖哄垎鏋�</span>
+          <div style="float: right; cursor: pointer">
+            <i class="el-icon-close" @click="closeBufferBox(1)"></i>
+          </div>
+        </div>
+        <div class="box-body">
+          <el-form ref="form" :model="bufFrom" label-width="100px">
+            <el-form-item label="缂撳啿鍗婂緞(绫�):">
+              <el-input v-model="bufFrom.val"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button @click="addBuffer(1)" type="info">鐐�</el-button>
+              <el-button @click="addBuffer(2)" type="info">绾�</el-button>
+              <el-button @click="addBuffer(3)" type="info">闈�</el-button>
+              <el-button @click="clearBuffer" type="info">娓呴櫎</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+      </el-card>
+    </div>
+    <div class="coordLocalBox" v-if="showCoordLocalBoxDialog">
+      <el-card class="box-card">
+        <div slot="header" class="clearfix">
+          <span>鍧愭爣瀹氫綅</span>
+          <div style="float: right; cursor: pointer">
+            <i class="el-icon-close" @click="closeBufferBox(2)"></i>
+          </div>
+        </div>
+        <div class="box-body">
+          <el-form ref="form" :model="coordFrom" label-width="50px">
+            <el-form-item label="缁忓害:">
+              <el-input v-model="coordFrom.lon"></el-input>
+            </el-form-item>
+            <el-form-item label="绾害:">
+              <el-input v-model="coordFrom.lat"></el-input>
+            </el-form-item>
+            <el-form-item label="楂樺害:">
+              <el-input v-model="coordFrom.height"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button @click="setCoordLocal" type="info">瀹氫綅</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+      </el-card>
+    </div>
+  </div>
 </template>
 
 <script>
 export default {
   name: '',
   data() {
-    return {};
+    return {
+      buffer: null,
+      showBufferBoxDialog: false,
+      showCoordLocalBoxDialog: false,
+      bufFrom: {
+        val: 50,
+      },
+      coordFrom: {
+        lon: 110,
+        lat: 32,
+        height: 8000000,
+      },
+    };
   },
   mounted() {
     this.init3DMap();
+    this.$bus.$on('mapChangeBox', (res) => {
+      this.showChangeBox(res);
+    });
   },
   methods: {
     init3DMap() {
+      //鍦板浘鍒濆鍖�
       window.sgworld = new SmartEarth.SGWorld('mapdiv', {
-        url: '/SmartEarthSDK/Workers/image/earth.jpg',
-        licenseServer: 'http://192.168.20.39/LFServer',
+        licenseServer: window.sceneConfig.licenseServer,
       });
-      window.Viewer = sgworld._Viewer;
-      sgworld.Navigate.Stop(); //鍙栨秷椋炶鐘舵��
+      window.Viewer = window.sgworld._Viewer;
+      //瀹氫綅
+      // sgworld.Navigate.jumpTo({
+      //   //璺宠浆瑙嗚
+      //   destination: new Cesium.Cartesian3.fromDegrees(110, 32, 8000000),
+      // });
       sgworld.Navigate.jumpTo({
         //璺宠浆瑙嗚
-        destination: new Cesium.Cartesian3.fromDegrees(110, 32, 8000000),
+        destination: {
+          x: 311837.3471863137,
+          y: 5628280.936629815,
+          z: 2992581.921482893,
+        },
+        orientation: {
+          heading: 2.5028896264234364,
+          pitch: -0.2201285642360813,
+          roll: 0.0,
+        },
       });
+      Viewer._enableInfoOrSelection = false;
       //鏄剧ずfps
-      sgworld._Viewer.scene.debugShowFramesPerSecond = false;
-      //mpt娣诲姞
+      Viewer.scene.debugShowFramesPerSecond = false;
+      //瀵艰埅鎺т欢
+      window.sgworld.navControl('nav', false);
+      //姣斾緥灏�
+      window.sgworld.navControl('scale', false);
+
+      //褰卞儚瀵规瘮璁剧疆
+      var base = {
+        url: 'https://a.tile.openstreetmap.org/',
+      };
+      window.openStreetMap = sgworld.Creator.createImageryProvider(
+        'OpenStreetMap',
+        'OpenStreetMap',
+        base,
+        '0',
+        undefined,
+        true,
+        ''
+      );
+      openStreetMap.item.show = false;
+      //mpt鍔犺浇
       var option = {
-        url: 'http://183.162.245.49:82/SG/Elevation',
-        layerName: 'zhufeng.397336.mpt',
+        url: window.sceneConfig.mpt.url,
+        layerName: window.sceneConfig.mpt.name,
         requestVertexNormals: true,
       };
-      sgworld.Creator.sfsterrainprovider('', option, '', true, '');
-      //瀵艰埅鎺т欢
-      document.getElementById('distanceLegendDiv').style.display = 'none';
-      //姣斾緥灏�
-      sgworld.navControl('enableCompass', false);
-      //sgworld.navControl("enableDistanceLegend", false);
-      setTimeout(() => {}, 10000);
+      sgworld.Creator.sfsterrainprovider('mpt', option, '', true, '');
+      window.elevationTool = new SmartEarth.ElevationTool(window.sgworld);
+      //妯″瀷鍔犺浇
+    },
+    //鏄剧ず寮圭獥
+    showChangeBox(res) {
+      if (res.name == 'Query') {
+        if (res.id == '6') {
+        } else if (res.id == '7') {
+        } else {
+          this.showBufferBoxDialog = true;
+        }
+      } else if (res.name == 'Coord') {
+        if (res.id == '1') {
+          this.showCoordLocalBoxDialog = true;
+        }
+      }
+    },
+    closeBufferBox(res) {
+      switch (res) {
+        case 1:
+          this.showBufferBoxDialog = false;
+          this.clearBuffer();
+          break;
+        case 2:
+          this.showCoordLocalBoxDialog = false;
+          break;
+      }
+    },
+    //瀹氫綅
+    setCoordLocal() {
+      var lon = parseFloat(this.coordFrom.lon);
+      var lat = parseFloat(this.coordFrom.lat);
+      var height = parseFloat(this.coordFrom.height);
+      sgworld.Navigate.jumpTo({
+        //璺宠浆瑙嗚
+        destination: new Cesium.Cartesian3.fromDegrees(lon, lat, height),
+      });
+    },
+    //缂撳啿鍖哄垎鏋�
+    clearBuffer() {
+      if (this.buffer == null) return;
+      this.buffer && this.buffer.clearBuff();
+      this.buffer = null;
+    },
+    getBufferTable(type) {
+      const points =
+        this.buffer.this_buff.buff.polygon.hierarchy.getValue().positions;
+      let geometrys = '';
+      let firstPoint;
+      let degrees = '';
+      points.forEach((p, i) => {
+        degrees = window.sgworld.Core.toDegrees(p);
+        geometrys += '[' + degrees.lon + ',' + degrees.lat + '],';
+        i === 0 && (firstPoint = '[' + degrees.lon + ',' + degrees.lat + ']');
+      });
+      geometrys += firstPoint;
+      if (geometrys.length != 0) geometrys.trimEnd(',');
+      geometrys = '{rings:[[' + geometrys + ']]}';
+    },
+    addBuffer(res) {
+      this.clearBuffer();
+      var buffRadius = this.bufFrom.val;
+      switch (res) {
+        case 1:
+          this.buffer = sgworld.Analysis.DrawPointBuffer(
+            buffRadius,
+            (event) => {
+              this.getBufferTable('point');
+            }
+          );
+          break;
+        case 2:
+          this.buffer = sgworld.Analysis.DrawPolylineBuffer(
+            buffRadius,
+            (event) => {
+              this.getBufferTable('line');
+            }
+          );
+          break;
+        case 3:
+          this.buffer = sgworld.Analysis.DrawPolygonBuffer(
+            buffRadius,
+            (event) => {
+              this.getBufferTable('polygon');
+            }
+          );
+          break;
+      }
     },
   },
 };
 </script>
 
 <style scoped>
-#mapdiv {
+.mapdiv {
   width: 100%;
   height: 100%;
   overflow: hidden;
@@ -52,4 +232,31 @@
   padding: 0;
   position: relative;
 }
+.bufferBox {
+  width: 412px;
+  height: 230px;
+  z-index: 40;
+  position: absolute;
+  right: 1%;
+  bottom: 1%;
+}
+.coordLocalBox {
+  width: 350px;
+  height: 370px;
+  z-index: 40;
+  position: absolute;
+  right: 1%;
+  bottom: 1%;
+}
+.box-card {
+  background-color: rgba(0, 0, 0, 0.6);
+  border: 1px solid rgba(32, 160, 255, 0.6);
+  color: white;
+}
+.box-body {
+  padding: 18px;
+}
+/deep/ .el-form-item__label {
+  color: white !important;
+}
 </style>

--
Gitblit v1.9.3