From 5b5a5a7899a9444665235d96d8d7f2d50fed6a8c Mon Sep 17 00:00:00 2001
From: Jin Lei <jinlei_182@163.com>
Date: 星期六, 11 十一月 2023 17:42:58 +0800
Subject: [PATCH] [历史影像]删除之前二维地图,叠加beijing54地图

---
 src/components/map/viewer.vue |  123 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 119 insertions(+), 4 deletions(-)

diff --git a/src/components/map/viewer.vue b/src/components/map/viewer.vue
index 4255a83..a2875be 100644
--- a/src/components/map/viewer.vue
+++ b/src/components/map/viewer.vue
@@ -1,6 +1,13 @@
 <template>
   <div>
     <div id="sdkContainer"></div>
+    <div class="listBox" v-show="viewer1Show && !isLand">
+      <ul>
+        <li v-for="(item, index) in arr" :key="index" @click="changeLeftMap($event, item, index)">
+          {{ item }}
+        </li>
+      </ul>
+    </div>
     <layerTreeTwoScreen v-if="layerTreeTwoScreen" />
     <!-- <div id="bottomInfo" v-html="bottomInfo"></div> -->
     <div id="switchImagerLayer" :style="{
@@ -12,7 +19,7 @@
     }">
       <transition name="animate__animated animate__bounce" @click="switchImagerLayerShowOrHide"
         enter-active-class="animate__backInRight" leave-active-class="animate__backOutRight" appear>
-        <switchImagerLayer v-show="switchImagerLayer" />
+        <switchImagerLayer ref="switchImagerLayer" v-show="switchImagerLayer" />
       </transition>
 
       <img class="swichImg" @click="switchImagerLayerShowOrHide" :src="switchImage" />
@@ -35,6 +42,8 @@
 import jiejing from "@/assets/img/new/jiejing.png";
 import "animate.css";
 import Bus from "@tools/Bus";
+
+let activeLi, nLayer;
 export default {
   name: "viewer",
   components: {
@@ -55,10 +64,14 @@
       scale: "1",
       offset: "0%",
       radio: 3,
+      arr: [
+        2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
+        2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
+      ],
     };
   },
   computed: {
-    ...mapState(["layerTreeTwoScreen", "cesiumInit"]),
+    ...mapState(["viewer1Show", "isLand", "layerTreeTwoScreen", "cesiumInit"]),
   },
   mounted() {
     this.$nextTick(function () {
@@ -67,8 +80,8 @@
       window.sgworld = new SmartEarth.EarthCtrl(
         "sdkContainer",
         {
-          // StaticFileBaseUrl: "../../../static/CimSDK/",
-          StaticFileBaseUrl: "../../../YZXNCS/static/CimSDK/",
+          StaticFileBaseUrl: "../../../static/CimSDK/",
+          // StaticFileBaseUrl: "../../../YZXNCS/static/CimSDK/",
         },
         {},
         {},
@@ -228,6 +241,74 @@
       return ratio;
       //this.onresize_height = ratio;
       // return ratio;
+    },
+    changeMode(mode) {
+      this.$refs.switchImagerLayer.switchImagerLayerClick(mode);
+    },
+    setImageComparison(isStart) {
+      this.isImage = isStart;
+      if (!this.isImage) {
+        this.destroyImageLayer();
+      }
+    },
+    destroyImageLayer() {
+      if (activeLi) {
+        activeLi.classList.remove('active');
+        activeLi = null;
+      }
+      if (nLayer) {
+        Viewer.imageryLayers.remove(nLayer, true);
+        nLayer = null;
+      }
+    },
+    changeLeftMap(event, item, index) {
+      let liObj = event.currentTarget;
+      if (activeLi) {
+        activeLi.classList.remove('active');
+        activeLi = null;
+      }
+      liObj.classList.add('active');
+      activeLi = liObj;
+      this.loadImageLayer(item);
+    },
+    loadImageLayer(year) {
+      if (nLayer) {
+        Viewer.imageryLayers.remove(nLayer, true);
+        nLayer = null;
+      }
+      nLayer = this.loadBJ54ImageLayer(year);
+    },
+    loadBJ54ImageLayer(year) {
+      let url = "http://172.26.64.84/service/ImageEngine/picdis/abc";
+      //let url = option.url;
+      //let year = option.year;
+      let paramUrl = `${url}?user=jjjskfq&password=Jjjskfq@2022&layer=Sate_${year}&style=&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix={z}&TileCol={nx}&TileRow={ny}`;
+      let minx = 113.168199 * Math.PI / 180.0;
+      let miny = 39.230551 * Math.PI / 180.0;
+      let maxx = 118.562362 * Math.PI / 180.0;
+      let maxy = 41.294714 * Math.PI / 180.0;
+      let rectangle = new Cesium.Rectangle(minx, miny, maxx, maxy);
+      let tilingScheme = new Cesium.GeographicTilingScheme({
+        rectangle: rectangle,
+        numberOfLevelZeroTilesX: 2,
+        numberOfLevelZeroTilesY: 1
+      });
+      var dx = {
+        url: paramUrl,
+        tilingScheme: tilingScheme,
+        customTags: {
+          nx: function (imageryProvider, x, y, level) {
+            return (2 << (level - 1)) + x;
+          },
+          ny: function (imageryProvider, x, y, level) {
+            return (2 << (level - 1)) + y;
+          }
+        }
+      };
+      var imageryProvider = new Cesium.UrlTemplateImageryProvider(dx);
+      let imageLayer = new Cesium.ImageryLayer(imageryProvider, { alpha: 1, brightness: 1.0 });
+      Viewer.imageryLayers.add(imageLayer, 2);
+      return imageLayer;
     },
     changeImage(val) {
       switch (val) {
@@ -450,6 +531,40 @@
   z-index: -1;
 }
 
+.listBox {
+  position: absolute;
+  left: 20px;
+  top: 100px;
+
+}
+
+.listBox .active {
+
+  background: rgba(255, 166, 0, 0.808);
+
+}
+
+.listBox li {
+  padding: 2px;
+  margin-top: 1px;
+  border-radius: 2px;
+  color: white;
+  background: rgba(14, 50, 143, 0.6);
+  font-size: 14px;
+  cursor: pointer;
+}
+
+/* 灞忓箷鍒嗚鲸鐜囨斁澶т负 125 */
+@media (-webkit-min-device-pixel-ratio: 1.25) {
+  .listBox li {
+    font-size: 12px;
+  }
+}
+
+.listBox li:hover {
+  background: rgba(255, 166, 0, 0.808);
+}
+
 .mid {
   position: absolute;
   top: 50%;

--
Gitblit v1.9.3