From b27e031827eae0f535d17bb20ff4809699151a17 Mon Sep 17 00:00:00 2001
From: YANGDL <114714267@qq.com>
Date: 星期一, 08 二月 2021 15:42:37 +0800
Subject: [PATCH] 修改了leaflet L加载模式 修改了使用less加载方式

---
 public/assets/images/map/marker-shadow.png   |    0 
 src/assets/css/map/map-popup.less            |   44 +++++++++++
 src/views/MapTemplate.vue                    |   51 ++++++++++--
 src/base/BaseVectorLayer.js                  |    2 
 src/components/helpers/ServiceLayerHelper.js |    7 -
 src/views/popup/Popup.vue                    |   53 +++++++++++++
 src/Sgis.js                                  |   19 ++--
 src/store/modules/map.js                     |    6 -
 src/assets/css/map/_map-variable.less        |    2 
 public/assets/images/map/marker-icon.png     |    0 
 src/main.js                                  |    5 +
 src/components/helpers/VectorLayerHelper.js  |    4 
 src/assets/css/map/map-elem-ui.less          |    6 +
 src/components/helpers/BasemapHelper.js      |    4 
 14 files changed, 170 insertions(+), 33 deletions(-)

diff --git a/public/assets/images/map/marker-icon.png b/public/assets/images/map/marker-icon.png
new file mode 100644
index 0000000..950edf2
--- /dev/null
+++ b/public/assets/images/map/marker-icon.png
Binary files differ
diff --git a/public/assets/images/map/marker-shadow.png b/public/assets/images/map/marker-shadow.png
new file mode 100644
index 0000000..9fd2979
--- /dev/null
+++ b/public/assets/images/map/marker-shadow.png
Binary files differ
diff --git a/src/Sgis.js b/src/Sgis.js
index 79265e7..eec70ab 100644
--- a/src/Sgis.js
+++ b/src/Sgis.js
@@ -1,4 +1,3 @@
-import * as L from 'leaflet'
 import BasemapHelper from '@components/helpers/BasemapHelper'
 import VectorLayerHelper from '@components/helpers/VectorLayerHelper'
 import ServiceLayerHelper from '@components/helpers/ServiceLayerHelper'
@@ -8,12 +7,11 @@
 import CanvasIcon from '@components/plugin/CanvasMarkers'
 import MagicMarker from '@components/plugin/MagicMarker'
 import WmtsSupport from '@components/plugin/wmts_plugins'
-import 'leaflet.markercluster'
 
 import MapConfig from '@/conf/MapConfig'
 import DashFlow from '@components/plugin/PathDashFlow'
 let map = null
-// let baseMapGroup = null
+const L = window.L
 const initMap = (div) => {
   if (map != null) {
     map.remove()
@@ -36,9 +34,8 @@
   })
 
   window.map = map
-  window.L = L
 
-  return { map: map, L: L }
+  return map
 }
 
 /**
@@ -46,17 +43,17 @@
  * @param map
  * @param L
  */
-const initBasemapsHelper = (map, L) => {
+const initBasemapsHelper = (map) => {
   // todo 杩欓噷杩涜搴曞浘鍦板浘鐨勫垵濮嬪寲
-  return new BasemapHelper({ map, L })
+  return new BasemapHelper({ map })
 }
 /**
  * 涓氬姟搴曞浘鍒濆鍖�
  * @param map
  * @param L
  */
-const initTileLayersHelper = (map, L) => {
-  return new ServiceLayerHelper({ map, L })
+const initTileLayersHelper = (map) => {
+  return new ServiceLayerHelper({ map })
 }
 
 /**
@@ -64,9 +61,9 @@
  * @param map
  * @param L
  */
-const initVectorLayersHelper = (map, L) => {
+const initVectorLayersHelper = (map) => {
   // todo 杩欓噷杩涜鍦板浘鐨勫垵濮嬪寲
-  window.vectorLayerHelper = new VectorLayerHelper({ map, L })
+  window.vectorLayerHelper = new VectorLayerHelper({ map })
   return window.vectorLayerHelper
 }
 
diff --git a/src/assets/css/map/_map-variable.less b/src/assets/css/map/_map-variable.less
new file mode 100644
index 0000000..c9f0594
--- /dev/null
+++ b/src/assets/css/map/_map-variable.less
@@ -0,0 +1,2 @@
+@color:#00fff6;
+@background-color:rgba(0,16,30,.9);
diff --git a/src/assets/css/map/map-elem-ui.less b/src/assets/css/map/map-elem-ui.less
new file mode 100644
index 0000000..4d31a33
--- /dev/null
+++ b/src/assets/css/map/map-elem-ui.less
@@ -0,0 +1,6 @@
+@import "_map-variable";
+.el-button--primary{
+    color: @color;
+    background-color: @background-color;
+    border-color: @color;
+}
diff --git a/src/assets/css/map/map-popup.less b/src/assets/css/map/map-popup.less
new file mode 100644
index 0000000..22b9a19
--- /dev/null
+++ b/src/assets/css/map/map-popup.less
@@ -0,0 +1,44 @@
+@import "_map-variable";
+
+.s-map-popup {
+    position: relative;
+    .leaflet-popup-content-wrapper, .leaflet-popup-tip {
+        background-color: @background-color;
+        /*background-color: transparent;*/
+        border: .00521rem solid @color;
+        padding: .10417rem;
+        -webkit-box-shadow: 0 0 0.03125rem 0 @color;
+        box-shadow: 0 0 0.03125rem 0 @color;
+        border-radius: 1rem;
+    }
+
+    .leaflet-popup-tip-container {
+        display: none;
+    }
+
+    .leaflet-popup-content-wrapper:before {
+        content: "";
+        position: absolute;
+        left: 50%;
+        bottom: -.3rem;
+        -webkit-transform: translateX(-50%) rotate(
+                        45deg
+        );
+        transform: translateX(-50%) rotate(
+                        45deg
+        );
+        width: .6rem;
+        height: .6rem;
+        background-color: @background-color;
+        border-right: .00521rem solid @color;
+        border-bottom: .00521rem solid @color;
+    }
+
+}
+
+.s-map-popup-panel {
+    color: @color;
+}
+
+
+
diff --git a/src/base/BaseVectorLayer.js b/src/base/BaseVectorLayer.js
index 2f417cd..0cef3f5 100644
--- a/src/base/BaseVectorLayer.js
+++ b/src/base/BaseVectorLayer.js
@@ -1,4 +1,4 @@
-import L from 'leaflet'
+
 
 /**
  * 鍩虹鍥惧眰绫伙紝 鍖呭惈鍥惧眰鐨勫垱寤猴紝鍔犺浇鍜屾竻闄ょ瓑鍩虹鍔熻兘銆�
diff --git a/src/components/helpers/BasemapHelper.js b/src/components/helpers/BasemapHelper.js
index 60fc9e8..a430df0 100644
--- a/src/components/helpers/BasemapHelper.js
+++ b/src/components/helpers/BasemapHelper.js
@@ -7,10 +7,10 @@
 class BasemapHelper {
   constructor (options) {
     this.map = options.map
-    this.L = options.L
+    this.L = window.L
     this.basemapList = []
     this.basemapMap = new Map()
-    this.basemapLayerGroup = options.L.layerGroup().addTo(options.map)
+    this.basemapLayerGroup = this.L.layerGroup().addTo(options.map)
   }
 
     /**
diff --git a/src/components/helpers/ServiceLayerHelper.js b/src/components/helpers/ServiceLayerHelper.js
index 21d9aca..c85d32b 100644
--- a/src/components/helpers/ServiceLayerHelper.js
+++ b/src/components/helpers/ServiceLayerHelper.js
@@ -2,15 +2,14 @@
 /**
  * 鍒涘缓鍥惧眰鐩稿叧鐨勭被
  */
-import L from 'leaflet'
 
 class ServiceLayerHelper {
   constructor (options) {
     this.map = options.map
-    this.L = options.L
+    this.L = window.L
     this.tileLayersMap = new Map()
     this.tileLayersWMSArray = []
-    this.tileLayerWmslayerGroup = L.layerGroup().addTo(this.map)
+    this.tileLayerWmslayerGroup = this.L.layerGroup().addTo(this.map)
     this.tileLayersWMTSArray = []
     this.tileLayersTileArray = []
     this.mapConfig = {}
@@ -89,7 +88,7 @@
       layers: options.layers || 'all', // country
       format: options.format || 'image/png',
       transparent: options.true || true,
-      crs: options.crs || L.CRS.EPSG4326,
+      crs: options.crs || this.L.CRS.EPSG4326,
       maxZoom: options.maxZoom || 21,
       minZoom: options.minZoom || 1,
       zoomOffset: options.zoomOffset || 0
diff --git a/src/components/helpers/VectorLayerHelper.js b/src/components/helpers/VectorLayerHelper.js
index 38b9102..3db8743 100644
--- a/src/components/helpers/VectorLayerHelper.js
+++ b/src/components/helpers/VectorLayerHelper.js
@@ -3,7 +3,7 @@
  */
 function VectorLayerHelper (options) {
   this.map = options.map
-  this.L = options.L
+  this.L = window.L
   this.vectorLayerMap = new Map()
   this.vectorLayerList = []
   this.vectorLayerGroup = null
@@ -14,7 +14,7 @@
      * @param map
      */
   this.initVectorLayers = (vueState) => {
-    this.vectorLayerGroup = options.L.layerGroup().addTo(options.map)
+    this.vectorLayerGroup = this.L.layerGroup().addTo(options.map)
     this.vueState = vueState
   }
 
diff --git a/src/main.js b/src/main.js
index fa37006..45c8a84 100644
--- a/src/main.js
+++ b/src/main.js
@@ -8,11 +8,14 @@
 import echartsDarkTheme from '@/styles/theme-dark/echarts/theme.json'
 import ElementUI from 'element-ui'
 import 'element-ui/lib/theme-chalk/index.css'
-
+import 'leaflet/dist/leaflet.css'
+import L from 'leaflet'
+import 'leaflet.markercluster'
 Vue.config.productionTip = false
 
 Vue.use(ElementUI, { size: 'small' })
 Vue.prototype.$cancels = []
+Vue.prototype.L = L
 // 娉ㄥ唽鎸囦护
 // registerDirectives(Vue)
 
diff --git a/src/store/modules/map.js b/src/store/modules/map.js
index d45b265..a9d9fc5 100644
--- a/src/store/modules/map.js
+++ b/src/store/modules/map.js
@@ -3,7 +3,6 @@
 const state = {
   currentCorp: null,
   currentCorpType: null,
-  L: null,
   map: null, // 瀹炰緥鍖栫殑map
   basemapHelper: {}, // 褰卞儚鍦板浘鍥惧眰鎺у埗鍣ㄥ疄鐜板姪鎵嬬▼搴�
   serviceLayerHelper: {}, // 鏈嶅姟鍥惧眰鎺у埗鍣ㄥ疄鐜板姪鎵嬬▼搴�
@@ -17,9 +16,8 @@
   mapConfig: mapConfig
 }
 const mutations = {
-  setMapObj (state, mObject) {
-    state.L = mObject.L
-    state.map = mObject.map
+  setMapObj (state, map) {
+    state.map = map
   },
   setBasemapHelper (state, layerHelper) {
     state.basemapHelper = layerHelper
diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue
index 8b3b26c..bde308c 100644
--- a/src/views/MapTemplate.vue
+++ b/src/views/MapTemplate.vue
@@ -1,6 +1,8 @@
 <template>
   <div class="full-screen">
-    <div id="map" ref="rootmap"></div>
+    <popup ref="popup" @callPopup="callPopup"></popup>
+    <div id="map" ref="rootmap">
+    </div>
     <sgis-layer-controller :preset="'warningPreset'">
       <lc-basemap></lc-basemap>
       <!--            <div class="barline"></div>-->
@@ -24,7 +26,7 @@
 import MonitorPanel from '@components/panel/RightSearchPanel'
 import TopEnterprisePanel from '@components/panel/TopEnterprisePanel'
 import ToolBoxPanel from '@components/panel/ToolBoxPanel'
-
+import Popup from '@views/popup/Popup'
 export default {
   name: 'MapTemplate',
   components: {
@@ -34,10 +36,12 @@
     MonitorPanel,
     LcBasemap,
     LcServiceLayer,
-    LcServiceLayerFilter
+    LcServiceLayerFilter,
+    Popup
   },
   data () {
     return {
+      map: null,
       basemapHelper: {},
       serviceLayerHelper: {},
       vectorLayerHelper: {}
@@ -58,22 +62,22 @@
   },
   methods: {
     saveMapStatus () {
-      this.$store.commit('setMapObj', this.mapObj)
+      this.$store.commit('setMapObj', this.map)
       this.$store.commit('setBasemapHelper', this.basemapHelper)
       this.$store.commit('setServiceLayerHelper', this.serviceLayerHelper)
       this.$store.commit('setVectorLayerHelper', this.vectorLayerHelper)
     },
     init () {
       const mapcontainer = this.$refs.rootmap
-      this.mapObj = Sgis.initMap(mapcontainer)
+      this.map = Sgis.initMap(mapcontainer)
 
-      this.basemapHelper = Sgis.initBasemapsHelper(this.mapObj.map, this.mapObj.L) // 鍒濆鍖栧熀纭�搴曞浘鍔╂墜
+      this.basemapHelper = Sgis.initBasemapsHelper(this.map) // 鍒濆鍖栧熀纭�搴曞浘鍔╂墜
       this.basemapHelper.initBasemap(this.mapConfig, false) // 绗簩涓弬鏁帮紝琛ㄧず鏄惁鍐呯綉搴曞浘
 
-      this.serviceLayerHelper = Sgis.initTileLayersHelper(this.mapObj.map, this.mapObj.L) // 鍒濆鍖栦笟鍔″簳鍥惧姪鎵�
+      this.serviceLayerHelper = Sgis.initTileLayersHelper(this.map) // 鍒濆鍖栦笟鍔″簳鍥惧姪鎵�
       this.serviceLayerHelper.initServiceLayers(this.mapConfig)
 
-      this.vectorLayerHelper = Sgis.initVectorLayersHelper(this.mapObj.map, this.mapObj.L) // 鍒濆鍖栧姩鎬佽绱犲浘灞傚姪鎵�
+      this.vectorLayerHelper = Sgis.initVectorLayersHelper(this.map) // 鍒濆鍖栧姩鎬佽绱犲浘灞傚姪鎵�
       this.vectorLayerHelper.initVectorLayers(this.mapConfig)
 
       this.saveMapStatus()
@@ -81,6 +85,37 @@
       // this.setBasemapHelper(this.basemapHelper)
       // this.setServiceLayerHelper(this.serviceLayerHelper)
       // this.setVectorLayerHelper(this.vectorLayerHelper)
+      this.addMarker()
+    },
+    addMarker () {
+      const L = this.L
+      var icon = new L.Icon({
+        iconUrl: 'assets/images/map/marker-icon.png',
+        shadowUrl: 'assets/images/map/marker-shadow.png',
+        iconSize: [25, 41],
+        iconAnchor: [12, 41],
+        popupAnchor: [1, -34],
+        shadowSize: [41, 41]
+      })
+      var marker = L.marker([32.2221, 118.7843], {
+        icon: icon
+      }).addTo(this.map)
+        .bindPopup(() => this.$refs.popup.$el, { className: 's-map-popup', minWidth: 300, closeButton: false, autoClose: false })
+        .bindTooltip('瀛椾綋鍏夋檿鏁堟灉t.', {
+          // permanent : true,
+          offset: [0, 0], // 鍋忕Щ
+          direction: 'right', // 鏀剧疆浣嶇疆
+          // sticky:true,//鏄惁鏍囪鍦ㄧ偣涓婇潰
+          className: 'anim-tooltip'// CSS鎺у埗
+        })
+
+      marker.on('popupopen', this.onLayerClick)
+    },
+    onLayerClick () {
+      this.$refs.popup.setShow()
+    },
+    callPopup (val) {
+      console.log(val)
     }
   }
 }
diff --git a/src/views/popup/Popup.vue b/src/views/popup/Popup.vue
new file mode 100644
index 0000000..5bc6926
--- /dev/null
+++ b/src/views/popup/Popup.vue
@@ -0,0 +1,53 @@
+<template>
+  <div v-if="isShow" class="s-map-popup-panel" >
+
+    <div>
+      {{ data }}
+    </div>
+    <div>
+      {{ data }}
+    </div>
+    <br>
+    <br>
+    <div>
+      {{ data }}
+    </div>
+    <br>
+    <br>
+
+    <div>
+      {{ data }}
+    </div>
+    <el-button type="primary" @click="onClick">涓昏鎸夐挳</el-button>
+  </div>
+</template>
+
+<script>
+// import '@/assets/css/map/map-popup.scss'
+export default {
+  name: 'Popup',
+  data () {
+    return {
+
+      isShow: false,
+      data: ''
+    }
+  },
+
+  methods: {
+    setShow () {
+      // this.style.display='auto'
+      this.data = 'adsfadfsadfsdafsdfsdfdsafsdafsdafa'
+      this.isShow = true
+    },
+    onClick () {
+      const param = 1111
+      this.$emit('callPopup', param)
+    }
+  }
+}
+</script>
+
+<style lang="less">
+@import '../../assets/css/map/map-popup.less';
+</style>

--
Gitblit v1.8.0