From 3eda2a49edc60f3961604223f557dcd6ab6db94f Mon Sep 17 00:00:00 2001
From: wangrui <zephyrs0894@163.com>
Date: 星期三, 23 十二月 2020 16:52:54 +0800
Subject: [PATCH] 底图切换组件开发完成

---
 public/assets/images/map-pages/icon/road.png         |    0 
 src/assets/images/map-pages/icon/road.png            |    0 
 src/components/LayerController/modules/LcBaseMap.vue |   82 ++++++++++++++++++---------
 src/conf/MapConfig.js                                |   16 ++--
 src/views/MapTemplate.vue                            |    7 -
 public/assets/images/map-pages/icon/terrain.png      |    0 
 src/assets/images/map-pages/icon/img.png             |    0 
 src/components/LayerController/LayerController.vue   |    2 
 src/components/helpers/BasemapHelper.js              |   19 +++---
 public/assets/images/map-pages/icon/img.png          |    0 
 src/assets/images/map-pages/icon/terrain.png         |    0 
 11 files changed, 76 insertions(+), 50 deletions(-)

diff --git a/public/assets/images/map-pages/icon/img.png b/public/assets/images/map-pages/icon/img.png
new file mode 100644
index 0000000..aab5372
--- /dev/null
+++ b/public/assets/images/map-pages/icon/img.png
Binary files differ
diff --git a/public/assets/images/map-pages/icon/road.png b/public/assets/images/map-pages/icon/road.png
new file mode 100644
index 0000000..9de0a95
--- /dev/null
+++ b/public/assets/images/map-pages/icon/road.png
Binary files differ
diff --git a/public/assets/images/map-pages/icon/terrain.png b/public/assets/images/map-pages/icon/terrain.png
new file mode 100644
index 0000000..9da2e04
--- /dev/null
+++ b/public/assets/images/map-pages/icon/terrain.png
Binary files differ
diff --git a/src/assets/images/map-pages/icon/img.png b/src/assets/images/map-pages/icon/img.png
new file mode 100644
index 0000000..aab5372
--- /dev/null
+++ b/src/assets/images/map-pages/icon/img.png
Binary files differ
diff --git a/src/assets/images/map-pages/icon/road.png b/src/assets/images/map-pages/icon/road.png
new file mode 100644
index 0000000..9de0a95
--- /dev/null
+++ b/src/assets/images/map-pages/icon/road.png
Binary files differ
diff --git a/src/assets/images/map-pages/icon/terrain.png b/src/assets/images/map-pages/icon/terrain.png
new file mode 100644
index 0000000..9da2e04
--- /dev/null
+++ b/src/assets/images/map-pages/icon/terrain.png
Binary files differ
diff --git a/src/components/LayerController/LayerController.vue b/src/components/LayerController/LayerController.vue
index 616af98..61e0339 100644
--- a/src/components/LayerController/LayerController.vue
+++ b/src/components/LayerController/LayerController.vue
@@ -196,7 +196,7 @@
   }
 
   .bodyBox{
-    background-color: rgba(0x04, 0x52, 0x7f, 0.6);
+    background-color: rgba(44,62,80, 0.6);
     border: 1px solid #10488c;
     margin-top: -1px;
     height: auto;
diff --git a/src/components/LayerController/modules/LcBaseMap.vue b/src/components/LayerController/modules/LcBaseMap.vue
index e86d7c1..9fca7f7 100644
--- a/src/components/LayerController/modules/LcBaseMap.vue
+++ b/src/components/LayerController/modules/LcBaseMap.vue
@@ -1,46 +1,74 @@
 <template>
-<div class="inner-panel">
+  <div class="inner-panel">
     <div v-for="item in basemapList" :key="item.code" class="basemap-layer-item">
-        <img src="" width="40" height="40" :title="item.name"/>
-        <input type="checkbox" title="鏄剧ず鏍囨敞" />
+      <img :src="item.conf.icon_actived" width="50" height="50" :title="item.name"/>
+      <input type="radio" name="basemap" v-model="selectedBasemap" :value="item.code" title="鏄剧ず鏍囨敞" @change="changeBasemap"/>
     </div>
-</div>
+  </div>
 </template>
 
 <script>
+import { mapState, mapMutations } from "vuex";
 export default {
-  name: 'LcBaseMap',
+  name: "LcBaseMap",
   components: {},
-  porps:['helper'],
   data() {
     return {
-      basemapHelper:null,
-        basemapList:[]
-    }
+      basemapList: [],
+      selectedBasemap: "tianditu_img",
+    };
   },
-  mounted(){
+  computed: {
+    ...mapState({
+      basemapHelper: (state) => {
+        return state.basemapHelper;
+      },
+    }),
+  },
+  mounted() {
     // console.log('03姝ラ锛�', this.helper)
   },
-  methods:{
-init(basemapHelper){
-  console.log('03姝ラ锛�', this.helper)
-  console.log(basemapHelper)
-  this.basemapHelper =basemapHelper
-}
-
-  }
-}
+  methods: {
+    ...mapMutations([]),
+    updateBasemapList() {
+      let list = this.basemapHelper.getBasemapList();
+      this.basemapList = list;
+    },
+    changeBasemap() {
+      this.basemapHelper.showBasemap(this.selectedBasemap, true)
+    },
+  },
+  watch: {
+    basemapHelper(newVal) {
+      if (newVal != null) {
+        this.updateBasemapList();
+      }
+    },
+  },
+};
 </script>
 
 <style scoped lang="less">
-.inner-panel{
-    display: flex;
-    justify-content: center;
-    align-items: center;
+.inner-panel {
+  display: flex;
+  justify-content: center;
+  align-items: center;
 }
-.basemap-layer-item{
-    width: 40px;
-    height: 40px;
-    margin: 10px;
+.basemap-layer-item {
+  width: 50px;
+  height: 50px;
+  margin: 10px;
+  border: 2px solid white;
+
+  input {
+    position: relative;
+    left: 0px;
+    top: -53px;
+  }
+  .basemap-layer-item-name {
+    position: relative;
+    left: 0px;
+    top: -53px;
+  }
 }
 </style>
diff --git a/src/components/helpers/BasemapHelper.js b/src/components/helpers/BasemapHelper.js
index 498e54b..652c7e8 100644
--- a/src/components/helpers/BasemapHelper.js
+++ b/src/components/helpers/BasemapHelper.js
@@ -46,30 +46,31 @@
 
     /**
      * 鏄剧ず鏌愪釜鍥惧眰
-     * @param map 鍦板浘瀵硅薄
      * @param layer 寰呮樉绀哄浘灞傚紩鐢�
      * @param isHideOthers 鏄惁鍏堝叧闂叾浠栧浘灞傦紝榛樿鏄痶rue
      */
-    showBasemap = (map, code, isHideOthers = true) => {
+    showBasemap = (code, isHideOthers = true) => {
+        debugger
         let basemap = this.basemapMap.get(code)
         if(isHideOthers) {
             for(let i = 0, len = this.basemapList.length; i < len; ++i){
-                map.removeLayer(this.basemapList[i])
+                this.map.removeLayer(this.basemapList[i].layer)
+                this.map.removeLayer(this.basemapList[i].annotation)
             }
         }
-        map.addLayer(basemap.layer)
-        map.addLayer(basemap.annotation)
+        this.map.addLayer(basemap.layer)
+        this.map.addLayer(basemap.annotation)
     }
 
     /**
      * 闅愯棌鏌愪釜鍥惧眰
-     * @param map 鍦板浘瀵硅薄
      * @param layer 寰呭叧闂浘灞傚紩鐢�
      */
-    hideBasemap = (map, code) => {
+    hideBasemap = (code) => {
+        debugger
         let basemap = this.basemapMap.get(code)
-        map.removeLayer(basemap.layer)
-        map.removeLayer(basemap.annotation)
+        this.map.removeLayer(basemap.layer)
+        this.map.removeLayer(basemap.annotation)
     }
 
     // 鍏綉鍒涘缓鍦板浘閮ㄥ垎
diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js
index a12465e..2c47b97 100644
--- a/src/conf/MapConfig.js
+++ b/src/conf/MapConfig.js
@@ -36,8 +36,8 @@
         {
             code: 'sinopec_img',
             name: '涓煶鍖栧ぉ鍦板浘褰卞儚',
-            icon_actived: '',
-            icon_deactived: '',
+            icon_actived: '/assets/images/map-pages/icon/img.png',
+            icon_deactived: '/assets/images/map-pages/icon/img.png',
             isAddToMap: true,
             map: {
                 layerName: '澶╁湴鍥惧奖鍍忓湴鍥�',
@@ -71,8 +71,8 @@
         {
             code: 'sinopec_vec',
             name: '涓煶鍖栧ぉ鍦板浘鐭㈤噺',
-            icon_actived: '',
-            icon_deactived: '',
+            icon_actived: '/assets/images/map-pages/icon/road.png',
+            icon_deactived: '/assets/images/map-pages/icon/road.png',
             isAddToMap: false,
             map: {
                 layerName: '澶╁湴鍥剧煝閲忓湴鍥�',
@@ -108,8 +108,8 @@
         {
             code: 'tianditu_img',
             name: '澶╁湴鍥惧奖鍍�',
-            icon_actived: '',
-            icon_deactived: '',
+            icon_actived: '/assets/images/map-pages/icon/img.png',
+            icon_deactived: '/assets/images/map-pages/icon/img.png',
             isAddToMap: true,
             map: {
                 layerName: '澶╁湴鍥惧奖鍍忓湴鍥�',
@@ -145,8 +145,8 @@
         {
             code: 'tianditu_vec',
             name: '澶╁湴鍥惧奖鍍�',
-            icon_actived: '',
-            icon_deactived: '',
+            icon_actived: '/assets/images/map-pages/icon/road.png',
+            icon_deactived: '/assets/images/map-pages/icon/road.png',
             isAddToMap: false,
             map: {
                 layerName: '澶╁湴鍥剧煝閲忓湴鍥�',
diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue
index 18537fc..0d5cabd 100644
--- a/src/views/MapTemplate.vue
+++ b/src/views/MapTemplate.vue
@@ -2,7 +2,7 @@
   <div class="full-screen">
         <div id="map" ref="rootmap"></div>
         <sgis-layer-controller :preset="'warningPreset'">
-            <lc-basemap ref="lcBasemap"></lc-basemap>
+            <lc-basemap></lc-basemap>
         </sgis-layer-controller>
         <monitor-panel></monitor-panel>
   </div>
@@ -42,7 +42,6 @@
       init() {
         const mapcontainer = this.$refs.rootmap
         this.mapObj = Sgis.initMap(mapcontainer)
-        console.log('01姝ラ锛�', this.mapObj)
 
         this.basemapHelper = Sgis.initBasemapsHelper(this.mapObj.map, this.mapObj.L) // 鍒濆鍖栧熀纭�搴曞浘鍔╂墜
         this.basemapHelper.initBasemap(mapConfig, false) // 绗簩涓弬鏁帮紝琛ㄧず鏄惁鍐呯綉搴曞浘
@@ -53,12 +52,10 @@
         this.vectorLayerHelper = Sgis.initVectorLayersHelper(this.mapObj.map, this.mapObj.L) // 鍒濆鍖栧姩鎬佽绱犲浘灞傚姪鎵�
         this.vectorLayerHelper.initVectorLayers(mapConfig)
 
-        console.log('02姝ラ锛�', this.basemapHelper)
-        this.$refs.lcBasemap.init(this.basemapHelper)
+        this.setMapObj(this.mapObj)
         this.setBasemapHelper(this.basemapHelper)
         this.setServiceLayerHelper(this.serviceLayerHelper)
         this.setVectorLayerHelper(this.vectorLayerHelper)
-        return this.map
       }
   }
 }

--
Gitblit v1.8.0