From 97277a2c41d80bbf375f88a47e242f1b17602b2b Mon Sep 17 00:00:00 2001
From: surprise <15810472099@163.com>
Date: 星期三, 29 十一月 2023 16:53:10 +0800
Subject: [PATCH] 发布管理修改

---
 src/components/mapol.vue |  374 +++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 329 insertions(+), 45 deletions(-)

diff --git a/src/components/mapol.vue b/src/components/mapol.vue
index 2298d63..56a3a30 100644
--- a/src/components/mapol.vue
+++ b/src/components/mapol.vue
@@ -1,77 +1,272 @@
 <template>
   <div id="mapol">
-    <div
-      @click="changeMenulayer"
-      class="center CenDiv"
-      :class="{ center1: centerFlag }"
-    >
+    <div style="display: flex">
       <div
-        id="cenBg"
-        v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"
-      ></div>
+        @click="changeMenulayer"
+        class="changeLayer"
+        style="  position: absolute;
+  bottom: 84px;
+  right: 46px;
+  height: 30px;
+  width: 30px;
+  z-index: 101;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+  border: 1px solid rgba(255, 255, 255, 0.5);"
+      >
+        <div
+          title="搴曞浘鍒囨崲"
+          id="cenBg"
+          class="mapBaseMap"
+        ></div>
+
+      </div>
+      <div
+        @click="changeMapType"
+        class="changeMapType"
+        v-if="$store.state.setChangeBaseMap"
+        style="  position: absolute;
+        
+  bottom: 52px;
+  right: 46px;
+  height: 30px;
+  width: 30px;
+  z-index: 101;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+  border: 1px solid rgba(255, 255, 255, 0.5);"
+      >
+        <div
+          title="2/3缁村垏鎹�"
+          id="cenBg"
+          :class="show2DMap ? 'mapTypeTwo' : 'mapTypeThree'"
+        ></div>
+      </div>
+    </div>
+    <!--    <div-->
+    <!--      @click="changeMenulayer"-->
+    <!--      class="center CenDiv"-->
+    <!--      :class="{ center1: centerFlag }"-->
+    <!--    >-->
+    <!--      <div-->
+    <!--        id="cenBg"-->
+    <!--        v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"-->
+    <!--      ></div>-->
+
+    <!--    </div>-->
+    <div
+      class="sindagis-map-compass"
+      style=" bottom: 130px; right: 40px;"
+    >
+      <span
+        class="left"
+        @click="leftClick"
+      ></span>
+      <span
+        class="center"
+        @click="recoveryClick"
+        :style="{transform: `rotate(${rotate}deg)`}"
+      ></span>
+      <span
+        class="right"
+        @click="rightClick"
+      ></span>
     </div>
   </div>
 </template>
 
 <script>
-import TileLayer from 'ol/layer/Tile';
-import XYZ from 'ol/source/XYZ';
-import Map from 'ol/Map';
-import View from 'ol/View';
-import { transform } from 'ol/proj';
+
+import { easeOut } from 'ol/easing'
+import TileLayer from "ol/layer/Tile"
+import XYZ from "ol/source/XYZ"
+import Map from "ol/Map"
+import View from "ol/View"
+import { transform } from "ol/proj"
+
+import {
+  OverviewMap,
+  defaults as defaultControls,
+  FullScreen,
+  ScaleLine,
+  Rotate,
+} from "ol/control.js"
+import {
+  DragRotateAndZoom,
+  defaults as defaultInteractions,
+} from 'ol/interaction.js';
 export default {
-  name: '',
+  name: "",
   data() {
     return {
       centerFlag: false,
       isActive: true,
       isMenuLayer: false,
-    };
+      rotate: 0,
+      currentDir: '',
+      show2DMap: false,
+    }
   },
   mounted() {
     this.init2DMap();
+    this.$bus.$on('changemapType', (e) => {
+      this.show2DMap = e;
+    });
   },
   methods: {
+
     init2DMap() {
-      var vectorLayer = new TileLayer({
-        source: new XYZ({
-          url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}',
-        }),
-      });
-      var imageLayer = new TileLayer({
-        source: new XYZ({
-          url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=6&x={x}&y={y}&z={z}',
-        }),
-      });
+      var layerBase = [];
+      // if (!is_production) {
+      //   var vectorLayer = new TileLayer({
+      //     source: new XYZ({
+      //       url: "http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}",
+      //     }),
+      //   })
+      //   var imageLayer = new TileLayer({
+      //     source: new XYZ({
+      //       url: "http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=6&x={x}&y={y}&z={z}",
+      //     }),
+      //   })
+      //   layerBase = [vectorLayer, imageLayer]
+      // } 
       window.map = new Map({
-        target: 'mapol',
-        layers: [imageLayer, vectorLayer],
+        target: "mapol",
+        // layers: layerBase,
         view: new View({
-          center: transform([105.02, 34.9], 'EPSG:4326', 'EPSG:3857'),
+          center: [105.02, 34.9],
           zoom: 4,
-          projection: 'EPSG:3857',
+          projection: "EPSG:4326",
+          minZoom: 5,
         }),
+        controls: defaultControls().extend([
+          new FullScreen(),
+
+        ]),
+        interactions: defaultInteractions().extend([new DragRotateAndZoom()]),
+      })
+
+
+      if (is_production) {
+        var base_ulr = window.sceneConfig.baseUrl;
+        if (base_ulr.indexOf('{host}') > -1) {
+          base_ulr = base_ulr.replace("{host}", iisHost)
+        }
+        window.olBaseMapLayer = new TileLayer({
+          title: "楂樺痉鍦板浘",
+          source: new XYZ({
+            url: base_ulr,
+            wrapX: false
+          })
+        });
+        window.map.addLayer(window.olBaseMapLayer);
+      } else {
+        window.olBaseMapLayer = new TileLayer({
+          source: new XYZ({
+            url: "http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=6&x={x}&y={y}&z={z}",
+          }),
+        })
+        window.map.addLayer(window.olBaseMapLayer);
+      }
+
+
+
+
+
+      var scaleLine = new ScaleLine({
+        units: "metric"
       });
+      map.addControl(scaleLine);
+
+      map.on("moveend", function (e) {
+        console.log(($(window).width() - $(".ol-scale-line-inner").width()) + "px");
+        // $(".ol-scale-line").css("left", ($(window).width() - $(".ol-scale-line").width() - 25) + "px");
+      });
+
     },
+
+    //浜岀淮/涓夌淮鍦板浘鍒囨崲
+    changeMapType() {
+      //
+      this.show2DMap = !this.show2DMap;
+      //浜岀淮
+      if (this.show2DMap) {
+        this.$bus.$emit("changemap", 2);
+      }
+      //涓夌淮
+      else {
+        this.$bus.$emit("changemap", 3);
+      }
+      this.$bus.$emit("changemapType", this.show2DMap);
+    },
+
     changeMenulayer() {
-      this.isActive = !this.isActive;
-      this.isMenuLayer = !this.isMenuLayer;
-      this.setLayerVisible();
+      this.$bus.$emit("setChangeBaseMapLayer", {type:'ol',boolen:true})
+      // this.isActive = !this.isActive
+      // this.isMenuLayer = !this.isMenuLayer
+      // this.setLayerVisible()
     },
     setLayerVisible() {
       if (this.isActive == true) {
-        map.getLayers().item(0).setVisible(false);
-        map.getLayers().item(1).setVisible(true);
+        map.getLayers().item(0).setVisible(false)
+        map.getLayers().item(1).setVisible(true)
       } else {
-        map.getLayers().item(0).setVisible(true);
-        map.getLayers().item(1).setVisible(false);
+        map.getLayers().item(0).setVisible(true)
+        map.getLayers().item(1).setVisible(false)
       }
     },
+    leftClick() {
+      var view = map.getView();
+      var center = map.getView().getCenter();
+      var rotation = map.getView().getRotation();
+      rotation = rotation - Math.PI / 2
+      this.rotate -= 90
+      view.animate({
+        center: center,                                            //鏃嬭浆涓績鐐�
+        rotation: rotation,
+        easing: easeOut                               //鏃嬭浆閫熷害
+      })
+      this.currentDir = 'left'
+    },
+    recoveryClick() {
+      var view = map.getView();
+      var center = map.getView().getCenter();
+      let a = this.rotate % 360 // -270
+      if (a != 0) { // 澶嶄綅
+        let dis = 360 - Math.abs(a)
+        let dis1 = Math.abs(a)
+        dis = dis > dis1 ? dis1 : dis
+        if (dis == 180) dis = -180
+        this.rotate = (this.rotate + dis) % 360 == 0 ? this.rotate + dis : this.rotate - dis
+      }
+      view.animate({
+        center: center,
+        rotation: 0,
+        easing: easeOut
+      })
+    },
+    rightClick() {
+      var view = map.getView();
+      var center = map.getView().getCenter();
+      var rotation = map.getView().getRotation();
+      rotation = rotation + Math.PI / 2
+      this.rotate += 90
+      view.animate({
+        center: center,
+        rotation: rotation,
+        easing: easeOut
+      })
+      this.currentDir = 'right'
+    },
   },
-};
+}
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
 #mapol {
   width: 100%;
   height: 100%;
@@ -92,8 +287,8 @@
   display: flex;
   flex-direction: column;
   justify-content: space-between;
-  box-shadow: 3px 3px 6px #666;
-  border: 1px solid rgba(204, 204, 204, 0.76);
+  // box-shadow: 3px 3px 6px #666;
+  // border: 1px solid rgba(204, 204, 204, 0.76);
   border-radius: 5px;
   cursor: pointer;
 }
@@ -111,13 +306,13 @@
   flex-direction: column;
   justify-content: space-between;
 }
-.CenDiv:hover {
-  border: 1px solid #409eff;
-}
+// .CenDiv:hover {
+//   border: 1px solid #409eff;
+// }
 .active {
   width: 100%;
   height: 100%;
-  background: url('../assets/img/Layer/imgLayer2.png') no-repeat center;
+  background: url("../assets/img/Layer/imgLayer2.png") no-repeat center;
   position: absolute;
   background-size: 100% 100%;
   border-radius: 5px;
@@ -125,9 +320,98 @@
 .menuLayer {
   width: 100%;
   height: 100%;
-  background: url('../assets/img/Layer/imgLayer1.png') no-repeat center;
+  background: url("../assets/img/Layer/imgLayer1.png") no-repeat center;
   position: absolute;
   background-size: 100% 100%;
   border-radius: 5px;
 }
+.ol-scale-line {
+  bottom: 55px !important;
+  right: 130px !important;
+}
+
+.sindagis-map-compass {
+  position: absolute;
+
+  z-index: 5;
+  width: 52px;
+  height: 54px;
+  background: url("../assets/img/compass.png") 0% 0% / 266px no-repeat;
+}
+
+.sindagis-map-compass .left,
+.sindagis-map-compass .center,
+.sindagis-map-compass .right {
+  position: absolute;
+  outline: none;
+  border: none;
+  cursor: pointer;
+  opacity: 1;
+}
+
+.sindagis-map-compass .left {
+  background: url("../assets/img/compass.png") -75px -5px / 266px no-repeat;
+  left: 2px;
+  top: 5px;
+  z-index: 1;
+  width: 15px;
+  height: 42px;
+}
+
+.sindagis-map-compass .left:hover {
+  background: url("../assets/img/compass.png") -89px -5px / 266px no-repeat;
+}
+
+.sindagis-map-compass .center {
+  background: url("../assets/img/compass.png") -56px -4px / 266px no-repeat;
+  left: 19px;
+  top: 4px;
+  width: 14px;
+  height: 44px;
+  transform: rotate(0deg);
+  transition: 1s;
+}
+.sindagis-map-compass .right {
+  background: url("../assets/img/compass.png") -75px -5px / 266px no-repeat;
+  right: 2px;
+  top: 5px;
+  z-index: 1;
+  width: 15px;
+  height: 42px;
+  transform: scaleX(-1);
+}
+.sindagis-map-compass .right:hover {
+  background: url("../assets/img/compass.png") -89px -5px / 266px no-repeat;
+}
+.mapBaseMap {
+  width: 100%;
+  height: 100%;
+  //margin-left: 10px;
+  background-image: url("../assets/img/basemap.png");
+  //background-image: url("../assets/img/synthesis/搴曞浘.png");
+  background-repeat: no-repeat;
+  background-size: contain;
+}
+.changeMapType {
+}
+.mapTypeTwo {
+  width: 100%;
+  height: 100%;
+  //margin-left: 10px;
+  background-image: url("../assets/img/3D.png");
+  //background-image: url("../assets/img/synthesis/3D.png");
+  background-repeat: no-repeat;
+  background-size: contain;
+}
+.mapTypeThree {
+  width: 100%;
+  height: 100%;
+  //margin-left: 10px;
+  background-image: url("../assets/img/2D.png");
+  //background-image: url("../assets/img/synthesis/2D 鎷疯礉 2.png");
+  background-repeat: no-repeat;
+  background-size: contain;
+}
+.changeLayer {
+}
 </style>

--
Gitblit v1.9.3