From 3649b8f4991af4178bea0c73e3d4bfc6c2ae4f03 Mon Sep 17 00:00:00 2001
From: 徐旺旺 <11530253@qq.com>
Date: 星期一, 29 三月 2021 18:09:29 +0800
Subject: [PATCH] 图层控制新的逻辑

---
 src/conf/layers/LayerWasteWater.js                         |   37 +++
 src/conf/layers/LayerWasteGas.js                           |   51 ++++
 src/components/LayerController/logic/Sample.js             |    9 
 src/views/MapTemplate.vue                                  |   12 
 src/components/LayerController/service/LayerFactory.js     |   88 +++++++
 src/utils/AjaxUtils.js                                     |    2 
 src/components/LayerController/modules/LcServiceLayer.vue  |  240 ++++++++++----------
 src/conf/layers/LayerSewers.js                             |   22 -
 src/conf/layers/LayerSolidWaste.js                         |   27 ++
 src/components/LayerController/service/WmsLayerService.js  |   11 
 /dev/null                                                  |   30 --
 src/components/LayerController/service/WfsLayerService.js  |  119 +++++++++
 src/components/LayerController/service/PopupService.js     |    0 
 src/conf/Constants.js                                      |    6 
 src/conf/MapConfig.js                                      |    8 
 src/components/LayerController/service/BusiLayerService.js |   32 ++
 src/components/panel/topicSearch/SewersSearch.vue          |    2 
 17 files changed, 526 insertions(+), 170 deletions(-)

diff --git a/src/components/LayerController/logic/Sample.js b/src/components/LayerController/logic/Sample.js
new file mode 100644
index 0000000..687b0e7
--- /dev/null
+++ b/src/components/LayerController/logic/Sample.js
@@ -0,0 +1,9 @@
+module.exports = function () {
+  this.init = (layer) => {
+    console.log('sample init !!!')
+  }
+
+  this.clickListener = (list) => {
+    console.log('sample clickListener !!!')
+  }
+}
diff --git a/src/components/LayerController/modules/LcServiceLayer.vue b/src/components/LayerController/modules/LcServiceLayer.vue
index 4b9aa25..ab589f0 100644
--- a/src/components/LayerController/modules/LcServiceLayer.vue
+++ b/src/components/LayerController/modules/LcServiceLayer.vue
@@ -1,134 +1,134 @@
 <template>
     <div class="inner-panel">
-<!--        <div class="title">-->
-<!--            鍥惧眰鎺у埗-->
-<!--        </div>-->
-<!--        <div class="wms-panel">-->
-<!--            <div v-for="item in serviceLayers" :key="item.code" class="layerbox">-->
-<!--                <div><input type="checkbox" :name="'wmsLayer_'+item.code" :checked="item.checked" :value="item.code"-->
-<!--                            @change="swAllLayers(item)"/>{{ item.name }} <span @click="swFilter(item)"-->
-<!--                                                                               class="btn-filter">杩囨护</span>-->
-<!--                </div>-->
-<!--                <div class="layerbox-item">-->
-<!--                    <div class="basemap-layer-item" v-for="itm in item.layers" :key="itm.code"><input type="checkbox"-->
-<!--                                                                                                      :name="'wmsSublayers_'+item.code+'_'+itm.code"-->
-<!--                                                                                                      :checked="itm.checked"-->
-<!--                                                                                                      :value="itm.code"-->
-<!--                                                                                                      @change="swWmsLayer(item.url,itm)"/>{{-->
-<!--                        itm.name }}-->
-<!--                    </div>-->
-<!--                </div>-->
-<!--            </div>-->
-<!--        </div>-->
-<!--        <lc-service-layer-filter v-if="layerFilterVisible" ref="serviceLayerFilter"></lc-service-layer-filter>-->
+        <div class="title">
+            鍥惧眰鎺у埗
+        </div>
+        <div class="wms-panel">
+            <div v-for="item in serviceLayers" :key="item.code" class="layerbox">
+                <div><input type="checkbox" :name="'wmsLayer_'+item.code" :checked="item.checked" :value="item.code"
+                            @change="swAllLayers(item)"/>{{ item.name }} <span @click="swFilter(item)"
+                                                                               class="btn-filter">杩囨护</span>
+                </div>
+                <div class="layerbox-item">
+                    <div class="basemap-layer-item" v-for="itm in item.layers" :key="itm.code"><input type="checkbox"
+                                                                                                      :name="'wmsSublayers_'+item.code+'_'+itm.code"
+                                                                                                      :checked="itm.checked"
+                                                                                                      :value="itm.code"
+                                                                                                      @change="swWmsLayer(itm)"/>{{
+                        itm.name }}
+                    </div>
+                </div>
+            </div>
+        </div>
+        <lc-service-layer-filter v-if="layerFilterVisible" ref="serviceLayerFilter"></lc-service-layer-filter>
     </div>
 </template>
 
-<!--<script>-->
-<!--import WfsHelper from '../../helpers/WfsHelper'-->
-<!--import LcServiceLayerFilter from '@components/LayerController/modules/LcServiceLayerFilter'-->
-<!--import AjaxUtils from '../../../utils/AjaxUtils'-->
+<script>
+import WfsHelper from '../../helpers/WfsHelper'
+import LcServiceLayerFilter from '@components/LayerController/modules/LcServiceLayerFilter'
+import AjaxUtils from '../../../utils/AjaxUtils'
 
-<!--export default {-->
-<!--  name: 'LcServiceLayer',-->
-<!--  components: { LcServiceLayerFilter },-->
-<!--  data () {-->
-<!--    return {-->
-<!--      layerFilterVisible: false-->
-<!--    }-->
-<!--  },-->
-<!--  computed: {-->
-<!--    serviceLayers () {-->
-<!--      return this.$store.state.map.serviceLayers.LayerSewersLine-->
-<!--    }-->
-<!--  },-->
-<!--  mounted () {-->
-<!--    // console.log('03姝ラ锛�', this.helper)-->
-<!--    this.updateServiceLayerList()-->
-<!--  },-->
-<!--  methods: {-->
-<!--    swAllLayers (item) {-->
-<!--      // eslint-disable-next-line no-debugger-->
-<!--      item.checked = !item.checked-->
-<!--      for (let i = 0, len = item.layers.length; i < len; ++i) {-->
-<!--        item.layers[i].checked = item.checked-->
-<!--      }-->
-<!--      this.updateWms()-->
-<!--    },-->
-<!--    loadWfs () {-->
-<!--      var wfsHelper = new WfsHelper()-->
-<!--      wfsHelper.addTypeName('绠$嚎鐐�')-->
-<!--      wfsHelper.addEquals('pipename', '鐮旂┒闄�01璺痀S000001')-->
+export default {
+  name: 'LcServiceLayer',
+  components: { LcServiceLayerFilter },
+  data () {
+    return {
+      layerFilterVisible: false
+    }
+  },
+  computed: {
+    serviceLayers () {
+      return this.$store.state.map.serviceLayers.LayerSewersLine
+    }
+  },
+  mounted () {
+    // console.log('03姝ラ锛�', this.helper)
+    this.updateServiceLayerList()
+  },
+  methods: {
+    swAllLayers (item) {
+      // eslint-disable-next-line no-debugger
+      item.checked = !item.checked
+      for (let i = 0, len = item.layers.length; i < len; ++i) {
+        item.layers[i].checked = item.checked
+      }
+      this.updateWms()
+    },
+    loadWfs () {
+      var wfsHelper = new WfsHelper()
+      wfsHelper.addTypeName('绠$嚎鐐�')
+      wfsHelper.addEquals('pipename', '鐮旂┒闄�01璺痀S000001')
 
-<!--      AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {}, (res) => {-->
-<!--        console.log(res)-->
-<!--      })-->
-<!--    },-->
-<!--    swWmsLayer (url, itm) {-->
-<!--      itm.checked = !itm.checked-->
-<!--      if (itm.checked) {-->
-<!--        window.serviceLayerHelper.loadGeojsonLayer(url, itm)-->
-<!--      } else {-->
-<!--        window.serviceLayerHelper.removeLayer(itm)-->
-<!--      }-->
-<!--      // this.updateWms()-->
-<!--    },-->
-<!--    swFilter (item) {-->
-<!--      this.layerFilterVisible = !this.layerFilterVisible-->
-<!--    },-->
-<!--    updateServiceLayerList () {-->
+      AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {}, (res) => {
+        console.log(res)
+      })
+    },
+    swWmsLayer (itm) {
+      itm.checked = !itm.checked
+      if (itm.checked) {
+        window.layerFactory.show(itm.code)
+      } else {
+        window.layerFactory.hide(itm.code)
+      }
+      // this.updateWms()
+    },
+    swFilter (item) {
+      this.layerFilterVisible = !this.layerFilterVisible
+    },
+    updateServiceLayerList () {
 
-<!--    },-->
-<!--    updateWms () {-->
-<!--      var mapConfig = this.mapConfig-->
-<!--      var wmsHelper = new WfsHelper()-->
-<!--      wmsHelper.initMapConfig(mapConfig)-->
-<!--      var wmsLayersMap = wmsHelper.getWmsLayersMap()-->
-<!--      for (var k in wmsLayersMap) {-->
-<!--        var layers = wmsLayersMap[k]-->
-<!--        var tileLayer = window.serviceLayerHelper.getTileLayer(k)-->
-<!--        if (tileLayer) {-->
-<!--          tileLayer.setParams({ layers: layers.join(',') }, false)-->
-<!--          tileLayer.setUrl(tileLayer.config.url, false)-->
-<!--        }-->
-<!--      }-->
-<!--    }-->
-<!--  }-->
-<!--}-->
-<!--</script>-->
+    },
+    updateWms () {
+      var mapConfig = this.mapConfig
+      var wmsHelper = new WfsHelper()
+      wmsHelper.initMapConfig(mapConfig)
+      var wmsLayersMap = wmsHelper.getWmsLayersMap()
+      for (var k in wmsLayersMap) {
+        var layers = wmsLayersMap[k]
+        var tileLayer = window.serviceLayerHelper.getTileLayer(k)
+        if (tileLayer) {
+          tileLayer.setParams({ layers: layers.join(',') }, false)
+          tileLayer.setUrl(tileLayer.config.url, false)
+        }
+      }
+    }
+  }
+}
+</script>
 
-<!--<style scoped lang="less">-->
-<!--    .inner-panel {-->
-<!--        .title{-->
-<!--            color: #ffffff;-->
-<!--            font-size: 16px;-->
-<!--            font-weight: 600;-->
-<!--            margin: 10px;-->
-<!--            text-align: center;-->
-<!--        }-->
-<!--        .btn-filter {-->
-<!--            cursor: pointer;-->
-<!--            color: #ffffff;-->
-<!--        }-->
+<style scoped lang="less">
+    .inner-panel {
+        .title{
+            color: #ffffff;
+            font-size: 16px;
+            font-weight: 600;
+            margin: 10px;
+            text-align: center;
+        }
+        .btn-filter {
+            cursor: pointer;
+            color: #ffffff;
+        }
 
-<!--        .wms-panel {-->
-<!--            width: 250px;-->
+        .wms-panel {
+            width: 250px;
 
-<!--            .layerbox {-->
-<!--                width: 100%;-->
+            .layerbox {
+                width: 100%;
 
-<!--                .layerbox-item {-->
-<!--                    display: flex;-->
-<!--                    flex-flow: row wrap;-->
-<!--                    margin-left: 15px;-->
-<!--                    margin-top: 5px;-->
+                .layerbox-item {
+                    display: flex;
+                    flex-flow: row wrap;
+                    margin-left: 15px;
+                    margin-top: 5px;
 
-<!--                    .basemap-layer-item {-->
-<!--                        width: 50%;-->
-<!--                    }-->
-<!--                }-->
-<!--            }-->
-<!--        }-->
-<!--    }-->
+                    .basemap-layer-item {
+                        width: 50%;
+                    }
+                }
+            }
+        }
+    }
 
-<!--</style>-->
+</style>
diff --git a/src/components/LayerController/service/BusiLayerService.js b/src/components/LayerController/service/BusiLayerService.js
new file mode 100644
index 0000000..254a819
--- /dev/null
+++ b/src/components/LayerController/service/BusiLayerService.js
@@ -0,0 +1,32 @@
+/**
+ * 鍔犺浇涓氬姟鏁版嵁鍥惧眰
+ */
+import { logicMapper } from '@src/conf/Constants'
+
+class BusiLayerService {
+  constructor (config) {
+    this.L = window.L
+    this.map = window.map
+    this.config = config
+  }
+
+  init (layer) {
+    // 寮曞叆 鍏宠仈鐨刯s锛屽湪constant.js涓牴鎹甤onfig閰嶇疆鐨刬d寰楀埌澶勭悊js
+    const id = this.config.code
+    console.log(logicMapper)
+    const file = logicMapper[id]
+    if (!file) {
+      console.log('鎵句笉鍒伴�昏緫澶勭悊js!!!')
+    } else {
+      console.log('-----' + file)
+      var BusiLayer = require('../logic/' + file)
+      console.log(BusiLayer)
+      var busiLayer = new BusiLayer()
+      // 璋冪敤init
+      busiLayer.init(layer)
+      // 璋冪敤click浜嬩欢
+    }
+  }
+}
+
+export default BusiLayerService
diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js
new file mode 100644
index 0000000..7626125
--- /dev/null
+++ b/src/components/LayerController/service/LayerFactory.js
@@ -0,0 +1,88 @@
+import store from '@/store'
+import WfsLayerService from './WfsLayerService'
+import BusiLayerService from './BusiLayerService'
+import WmsLayerService from './WmsLayerService'
+class LayerFactory {
+  constructor (options) {
+    this.L = options.L
+    this.map = window.map
+    this.layers = {}
+  }
+
+  createLayerGroup () {
+    return this.L.layerGroup().addTo(this.map)
+  }
+
+  init () {
+    // 1. 閬嶅巻layer config
+    var layerConfig = store.state.map.serviceLayers.LayerSewersLine
+    for (var i = 0, l = layerConfig.length; i < l; i++) {
+      var config = layerConfig[i]
+      var layers = config.layers
+      for (var j = 0; j < layers.length; j++) {
+        var childConfig = layers[j]
+        var code = childConfig.code
+        var wfs = childConfig.wfs
+        var wms = childConfig.wms
+        var url = childConfig.url
+        // 鍒ゆ柇鏄惁宸茬粡鍔犺浇杩囷紝鍔犺浇杩囧氨 蹇界暐鎺�
+        const layer = this.layers[code]
+        if (!layer) {
+          const newLayer = this.createLayerGroup()
+          this.layers[code] = newLayer
+          // 2. 鍒ゆ柇绫诲瀷
+          if (wfs) {
+            // 3. 瀹炰緥鍖栧叿浣搒ervice
+            // var busiLayerService = new BusiLayerService()
+            // busiLayerService.init()
+            var wfsLayerService = new WfsLayerService(childConfig)
+            wfsLayerService.init(newLayer)
+          }
+          if (wms) {
+            var wmsLayerService = new WmsLayerService(childConfig)
+            wmsLayerService.init(newLayer)
+          }
+          // 璇锋眰涓氬姟鏁版嵁鎺ュ彛
+          if (url) {
+            var busiLayerService = new BusiLayerService(childConfig)
+            busiLayerService.init(newLayer)
+          }
+        } else {
+          this.show(code)
+        }
+      }
+    }
+  }
+
+  show (code) {
+    var _layer = this.layers[code].addTo(this.map)
+    this.setZIndex(_layer)
+  }
+
+  hide (code) {
+    var layer = this.layers[code]
+    layer && this.map.removeLayer(layer)
+  }
+
+  toggle (code) {
+
+  }
+
+  /**
+   * 璁剧疆index,绾垮湪鏈�涓嬮潰锛岀偣鍦ㄤ笂闈�
+   * @param layerGroup 鍥惧眰缁�
+   */
+  setZIndex (layerGroup) {
+    var layers = layerGroup.getLayers()
+    if (layers.length > 0) {
+      var layer = layers[0]
+      if (layer.feature && (layer.feature.geometry.type === 'LineString' || layer.feature.geometry.type === 'MultiLineString')) {
+        layerGroup.bringToBack()
+      } else {
+        layerGroup.bringToFront()
+      }
+    }
+  }
+}
+
+export default LayerFactory
diff --git a/src/components/LayerController/service/PopupService.js b/src/components/LayerController/service/PopupService.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/components/LayerController/service/PopupService.js
diff --git a/src/components/LayerController/service/WfsLayerService.js b/src/components/LayerController/service/WfsLayerService.js
new file mode 100644
index 0000000..e5a175d
--- /dev/null
+++ b/src/components/LayerController/service/WfsLayerService.js
@@ -0,0 +1,119 @@
+/**
+ * 鍔犺浇涓氬姟鏁版嵁鍥惧眰
+ */
+
+import styles from '../../../conf/Styles'
+import AjaxUtils from '../../../utils/AjaxUtils'
+
+class WfsLayerService {
+  constructor (config) {
+    this.config = config
+    this.params = {
+      version: '1.0.0',
+      REQUEST: 'getfeature',
+      OUTPUTFORMAT: 'json',
+      maxFeatures: 20000
+    }
+    this.popupComp = window.popupComp
+    this.L = window.L
+    this.map = window.map
+    this.regex = /\{(.+?)\}/g // 鍖归厤{}
+  }
+
+  init (layer) {
+    const wfsUrl = this.config.wfs
+    if (wfsUrl) {
+      AjaxUtils.get4JsonDataByUrl(wfsUrl, this.params, (res) => this.draw(layer, res.data.features))
+    }
+  }
+
+  draw (layer, features) {
+    const icon = this.config.icon
+    const geojson = this.L.geoJSON(features, {
+      style: function (feature) {
+        return {
+          fill: styles.defaultLineStyle.fill,
+          weight: styles.defaultLineStyle.weight,
+          fillColor: styles.defaultLineStyle.fillColor,
+          color: styles.defaultLineStyle.color,
+          fillOpacity: styles.defaultLineStyle.fillOpacity,
+          opacity: styles.defaultLineStyle.opacity,
+          dashArray: styles.defaultLineStyle.dashArray,
+          dashSpeed: styles.defaultLineStyle.dashSpeed
+        }
+      },
+      pointToLayer: (geoJsonPoint, latlng) => {
+        return this.L.canvasMarker(latlng,
+          {
+            img: {
+              // url: 'assets/images/map/marker-icon.png',
+              url: '/assets/images/map/' + icon,
+              size: styles.defaultLineStyle.size
+            }
+          })
+      },
+      onEachFeature: (feature, layer) => {
+        layer.bindPopup((layer) => {
+          this.popupComp.setDatas(layer)
+          this.popupComp.setShow()
+          return this.popupComp.$el
+        }, {
+          className: 's-map-popup',
+          minWidth: 300,
+          closeButton: false,
+          autoClose: false
+        })
+          .bindTooltip((layer) => this.tooltipListener(layer), { direction: 'bottom', offset: [0, 15], sticky: true })
+          .on('mouseover', (e) => this.mouseOverListener(e, layer)).on('mouseout', (e) => this.mouseOutListener(e, layer))
+      }
+    }).addTo(layer)
+    return geojson
+  }
+
+  mouseOverListener (e, layer) {
+    const icon = this.config.icon
+    const type = e.target.feature.geometry.type
+    if (type === 'LineString' || type === 'MultiLineString') {
+      layer.setStyle({ weight: 8, color: '#00ffff' })
+    } else if (type === 'Point' || type === 'MultiPoint') {
+      layer.setStyle({
+        img: {
+          url: '/assets/images/map/' + icon,
+          size: [25, 25]
+        }
+      })
+      layer.bringToFront()
+    }
+  }
+
+  mouseOutListener (e, layer) {
+    const icon = this.config.icon
+    const type = e.target.feature.geometry.type
+    if (type === 'LineString' || type === 'MultiLineString') {
+      layer.setStyle({ weight: styles.defaultLineStyle.weight, color: styles.defaultLineStyle.color })
+    }
+    if (type === 'Point' || type === 'MultiPoint') {
+      layer.setStyle({
+        img: {
+          url: '/assets/images/map/' + icon,
+          size: styles.defaultLineStyle.size
+        }
+      })
+    }
+  }
+
+  tooltipListener (layer) {
+    const nameId = layer.feature.id
+    let name = ''
+    if (nameId.indexOf('涓夐��') !== -1 || nameId.indexOf('鍥涢��') !== -1 || nameId.indexOf('绐ㄤ簳') !== -1) {
+      name = layer.feature.properties.pointnumber
+    } else {
+      name = layer.feature.properties.name
+    }
+    if (name === undefined) {
+      name = ''
+    }
+    return name
+  }
+}
+export default WfsLayerService
diff --git a/src/components/LayerController/service/WmsLayerService.js b/src/components/LayerController/service/WmsLayerService.js
new file mode 100644
index 0000000..b818aec
--- /dev/null
+++ b/src/components/LayerController/service/WmsLayerService.js
@@ -0,0 +1,11 @@
+class WfsLayerService {
+  constructor (config) {
+    this.config = config
+  }
+
+  init () {
+
+  }
+}
+
+export default WfsLayerService
diff --git a/src/components/panel/topicSearch/SewersSearch.vue b/src/components/panel/topicSearch/SewersSearch.vue
index f6ff0f2..c969cde 100644
--- a/src/components/panel/topicSearch/SewersSearch.vue
+++ b/src/components/panel/topicSearch/SewersSearch.vue
@@ -101,7 +101,7 @@
 </template>
 
 <script>
-import { PipelineTypeOptions } from '@/conf/LayerSewers'
+import { PipelineTypeOptions } from '@/conf/layers/LayerSewers'
 
 import WfsHelper from '@components/helpers/WfsHelper'
 import AjaxUtils from '@utils/AjaxUtils'
diff --git a/src/conf/Constants.js b/src/conf/Constants.js
index 72bb8f0..cef757c 100644
--- a/src/conf/Constants.js
+++ b/src/conf/Constants.js
@@ -4,6 +4,12 @@
   POLYGON: 'polygon'
 }
 
+export const logicMapper = {
+  fsqy: 'Sample.js',
+  fspfk: 'Sample.js',
+  fsjcd: 'Sample.js'
+}
+
 export const props = {
   pipename: '绠$嚎鍚嶇О',
   pipecode: '绠$嚎缂栫爜',
diff --git a/src/conf/LayerWasteWater.js b/src/conf/LayerWasteWater.js
deleted file mode 100644
index 950943c..0000000
--- a/src/conf/LayerWasteWater.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * 搴熸按鍥惧眰
- * @type {string}
- */
-const APP_GIS_HOST_2 = 'http://xearth.cn:8088'
-export const LayerWasteWater = {
-  code: 'pipeline',
-  name: '搴熸按',
-  type: 'geojson',
-  // url: APP_GIS_HOST_2 + '/server/ogcserver/PipeLineTest/wms?version=1.1.1',
-  // url: APP_GIS_HOST_2 + '/layer/findLayer?layerName={sname}',
-  url: APP_GIS_HOST_2 + '/server/ogcserver/PipeLine/wfs?version=1.0.0&TYPENAME={sname}&REQUEST=getfeature&OUTPUTFORMAT=json&maxFeatures=20000',
-  checked: true,
-  layers: [
-    {
-      code: 'rainline',
-      name: '浼佷笟',
-      sname: '浼佷笟', // 琛ㄥ悕
-      checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
-      minZoom: 10, // 鍦ㄦ寚瀹氱骇鍒樉绀�
-      childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
-    },
-    {
-      code: 'oilline',
-      name: '鐩戞祴鐐�',
-      sname: '鐩戞祴鐐�',
-      checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
-      minZoom: 10,
-      childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
-    },
-    {
-      code: 'saltline',
-      name: '鎺掓斁鍙�',
-      sname: '鎺掓斁鍙�',
-      checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
-      minZoom: 10,
-      childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
-    }
-  ]
-}
diff --git a/src/conf/Layers.js b/src/conf/Layers.js
deleted file mode 100644
index 5c69adf..0000000
--- a/src/conf/Layers.js
+++ /dev/null
@@ -1,30 +0,0 @@
-// import * as L from 'leaflet'
-import { LayerSewers, PointLayers } from './LayerSewers'
-// const APP_GIS_HOST = 'http://xearth.cn:6299'
-
-// 鍑犱綍绫诲瀷甯搁噺
-
-export const ServiceLayers = [
-  /*    {
-        code: 'pipeline',
-        name: '绠$綉鏁版嵁',
-        icon_actived: '',
-        icon_deactived: '',
-        type: 'wms',
-        // url: APP_GIS_HOST_PIPELINE + '/server/ogcserver/PipeLineTest/wms?version=1.1.1',
-        url: APP_GIS_HOST_PIPELINE + '/server/ogcserver/PipeLine/wms?version=1.1.1',
-        inLegend: true,
-        checked: true,
-        option: {
-          layers: 'all',
-          styles: '', // Comma-separated list of WMS styles.
-          format: 'image/png', // WMS image format (use 'image/png' for layers with transparency).
-          transparent: true, // If true, the WMS service will return images with transparency.
-          version: '1.1.1', // Version of the WMS service to use
-          tileSize: L.point(256, 256),
-          crs: L.CRS.EPSG4326, // Coordinate Reference System to use for the WMS requests, defaults to map CRS. Don't change this if you're not sure what it means.
-          uppercase: false,
-          WMSTILE: 1
-        }, */
-  LayerSewers, PointLayers
-]
diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js
index 98ff85c..31dcaf9 100644
--- a/src/conf/MapConfig.js
+++ b/src/conf/MapConfig.js
@@ -1,7 +1,9 @@
 锘縤mport * as L from 'leaflet'
 import TDT from './TDT'
-import { LayerSewersLine, LayerSewersPoint } from './LayerSewers'
-import { LayerWasteWater } from './LayerWasteWater'
+import { LayerSewersLine, LayerSewersPoint } from './layers/LayerSewers'
+import { LayerWasteWater } from './layers/LayerWasteWater'
+import { LayerSolidWaste } from './layers/LayerSolidWaste'
+import { LayerWasteGas } from './layers/LayerWasteGas'
 
 const curWwwPath = window.document.location.href
 const pathname = window.document.location.pathname
@@ -40,7 +42,7 @@
   IntranetBaseMaps: TDT.intranet,
   InternetBaseMaps: TDT.internet,
   Layers: {
-    LayerSewersLine: [LayerSewersLine, LayerWasteWater],
+    LayerSewersLine: [LayerSewersLine, LayerWasteWater, LayerWasteWater, LayerWasteGas, LayerSolidWaste],
     layerSewersPoint: LayerSewersPoint
   } // 姹¢洦姘村浘灞傞厤缃�
 }
diff --git a/src/conf/LayerSewers.js b/src/conf/layers/LayerSewers.js
similarity index 99%
rename from src/conf/LayerSewers.js
rename to src/conf/layers/LayerSewers.js
index 65c109d..a61b541 100644
--- a/src/conf/LayerSewers.js
+++ b/src/conf/layers/LayerSewers.js
@@ -1,13 +1,11 @@
 const APP_GIS_HOST_2 = 'http://xearth.cn:8088'
+const WFS_URL = APP_GIS_HOST_2 + '/server/ogcserver/PipeLine/wfs'
 // const APP_GIS_HOST_2 = 'http://localhost:3000'
 // const APP_GIS_HOST_2 = 'http://192.168.31.226:8088'
 export const LayerSewersLine = {
   code: 'pipeline',
   name: '绠$綉鏁版嵁',
   type: 'geojson',
-  // url: APP_GIS_HOST_2 + '/server/ogcserver/PipeLineTest/wms?version=1.1.1',
-  // url: APP_GIS_HOST_2 + '/layer/findLayer?layerName={sname}',
-  url: APP_GIS_HOST_2 + '/server/ogcserver/PipeLine/wfs?version=1.0.0&TYPENAME={sname}&REQUEST=getfeature&OUTPUTFORMAT=json&maxFeatures=20000',
   checked: true,
   layers: [
     {
@@ -15,7 +13,7 @@
       name: '闆ㄦ按绾�',
       sname: '绠$綉', // 琛ㄥ悕
       checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
+      wfs: WFS_URL + '?TYPENAME=绠$綉',
       minZoom: 10, // 鍦ㄦ寚瀹氱骇鍒樉绀�
       childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
     },
@@ -24,7 +22,7 @@
       name: '鍚补姹℃按绾�',
       sname: '鍚补姹℃按',
       checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
+      wfs: WFS_URL + '?TYPENAME=鍚补姹℃按',
       minZoom: 10,
       childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
     },
@@ -33,7 +31,7 @@
       name: '鍚洂姹℃按绾�',
       sname: '鍚洂姹℃按',
       checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
+      wfs: WFS_URL + '?TYPENAME=鍚洂姹℃按',
       minZoom: 10,
       childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
     },
@@ -42,7 +40,7 @@
       name: '鍚⒈姹℃按绾�',
       sname: '鍚⒈姹℃按',
       checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
+      wfs: WFS_URL + '?TYPENAME=鍚⒈姹℃按',
       minZoom: 10,
       childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
     },
@@ -51,7 +49,7 @@
       name: '鎺掑彛',
       sname: '鎺掑彛',
       checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
+      wfs: WFS_URL + '?TYPENAME=鎺掑彛',
       minZoom: 10,
       childLayer: 'pk' // 鍏宠仈PointLayers
     },
@@ -60,7 +58,7 @@
       name: '浜嬫晠姘寸嚎',
       sname: '浜嬫晠姘�',
       checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
+      wfs: WFS_URL + '?TYPENAME=浜嬫晠姘�',
       minZoom: 10,
       childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
     },
@@ -69,7 +67,7 @@
       name: '寰幆姘寸嚎',
       sname: '寰幆姘�',
       checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
+      wfs: WFS_URL + '?TYPENAME=寰幆姘�',
       minZoom: 10,
       childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
     },
@@ -78,7 +76,7 @@
       name: '鍑�鍖栨按绾�',
       sname: '鍑�鍖栨按',
       checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
+      wfs: WFS_URL + '?TYPENAME=鍑�鍖栨按',
       minZoom: 10,
       childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
     },
@@ -87,7 +85,7 @@
       name: '鐢熸椿姹℃按',
       sname: '鐢熸椿姹℃按',
       checked: true, // 榛樿閫変腑鐘舵��
-      filter: {},
+      wfs: WFS_URL + '?TYPENAME=鐢熸椿姹℃按',
       minZoom: 10,
       childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
     },
diff --git a/src/conf/layers/LayerSolidWaste.js b/src/conf/layers/LayerSolidWaste.js
new file mode 100644
index 0000000..3a654b6
--- /dev/null
+++ b/src/conf/layers/LayerSolidWaste.js
@@ -0,0 +1,27 @@
+/**
+ * 鍥哄簾鍥惧眰
+ * @type {string}
+ */
+export const LayerSolidWaste = {
+  code: 'solidWaste',
+  name: '搴熸皵',
+  checked: true,
+  layers: [
+    {
+      code: 'solidWasteQy',
+      name: '浼佷笟',
+      sname: '浼佷笟', // 琛ㄥ悕
+      checked: true, // 榛樿閫変腑鐘舵��
+      url: 'http://www.baidu.com', // 璇锋眰涓氬姟鏁版嵁鎺ュ彛
+      minZoom: 10 // 鍦ㄦ寚瀹氱骇鍒樉绀�
+    },
+    {
+      code: 'solidWasteJcd',
+      name: '鐩戞祴鐐�',
+      sname: '鐩戞祴鐐�',
+      checked: true, // 榛樿閫変腑鐘舵��
+      url: 'http://www.baidu2.com',
+      minZoom: 10
+    }
+  ]
+}
diff --git a/src/conf/layers/LayerWasteGas.js b/src/conf/layers/LayerWasteGas.js
new file mode 100644
index 0000000..3860e94
--- /dev/null
+++ b/src/conf/layers/LayerWasteGas.js
@@ -0,0 +1,51 @@
+/**
+ * 搴熸皵鍥惧眰
+ * @type {string}
+ */
+export const LayerWasteGas = {
+  code: 'wasteGas',
+  name: '搴熸皵',
+  checked: true,
+  layers: [
+    {
+      code: 'wasteGasQy',
+      name: '浼佷笟',
+      sname: '浼佷笟', // 琛ㄥ悕
+      checked: true, // 榛樿閫変腑鐘舵��
+      url: 'http://www.baidu.com', // 璇锋眰涓氬姟鏁版嵁鎺ュ彛
+      minZoom: 10 // 鍦ㄦ寚瀹氱骇鍒樉绀�
+    },
+    {
+      code: 'wasteGasJcd',
+      name: '鐩戞祴鐐�',
+      sname: '鐩戞祴鐐�',
+      checked: true, // 榛樿閫変腑鐘舵��
+      url: 'http://www.baidu2.com',
+      minZoom: 10
+    },
+    {
+      code: 'wasteGasVocs',
+      name: 'VOCs',
+      sname: 'VOCs',
+      checked: true, // 榛樿閫変腑鐘舵��
+      url: '',
+      minZoom: 10
+    },
+    {
+      code: 'wasteGasKrq',
+      name: '鍙噧姘�',
+      sname: '鍙噧姘�',
+      checked: true, // 榛樿閫変腑鐘舵��
+      url: '',
+      minZoom: 10
+    },
+    {
+      code: 'wasteGasYhq',
+      name: '鏈夊姘�',
+      sname: '鏈夊姘�',
+      checked: true, // 榛樿閫変腑鐘舵��
+      url: '',
+      minZoom: 10
+    }
+  ]
+}
diff --git a/src/conf/layers/LayerWasteWater.js b/src/conf/layers/LayerWasteWater.js
new file mode 100644
index 0000000..3f1ff32
--- /dev/null
+++ b/src/conf/layers/LayerWasteWater.js
@@ -0,0 +1,37 @@
+/**
+ * 搴熸按鍥惧眰
+ * @type {string}
+ */
+export const LayerWasteWater = {
+  code: 'pipeline',
+  name: '搴熸按',
+  checked: true,
+  layers: [
+    {
+      code: 'fsqy',
+      name: '浼佷笟',
+      sname: '浼佷笟', // 琛ㄥ悕
+      checked: true, // 榛樿閫変腑鐘舵��
+      url: 'http://www.baidu.com', // 璇锋眰涓氬姟鏁版嵁鎺ュ彛
+      minZoom: 10 // 鍦ㄦ寚瀹氱骇鍒樉绀�
+    },
+    {
+      code: 'fsjcd',
+      name: '鐩戞祴鐐�',
+      sname: '鐩戞祴鐐�',
+      checked: true, // 榛樿閫変腑鐘舵��
+      url: 'http://www.baidu2.com',
+      minZoom: 10,
+      childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
+    },
+    {
+      code: 'fspfk',
+      name: '鎺掓斁鍙�',
+      sname: '鎺掓斁鍙�',
+      checked: true, // 榛樿閫変腑鐘舵��
+      url: '',
+      minZoom: 10,
+      childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
+    }
+  ]
+}
diff --git a/src/utils/AjaxUtils.js b/src/utils/AjaxUtils.js
index 0499763..d0e1bfa 100644
--- a/src/utils/AjaxUtils.js
+++ b/src/utils/AjaxUtils.js
@@ -33,7 +33,7 @@
   axios({
     method: 'get',
     url: pUrl,
-    data: pData
+    params: pData
   }).then(function (response) {
     pBackFun(response)
   })
diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue
index 441dd80..43c1a35 100644
--- a/src/views/MapTemplate.vue
+++ b/src/views/MapTemplate.vue
@@ -45,6 +45,7 @@
 // import PopupGas from '@/components/flueGas/popup-gas'
 // // 鍏叡灞曠ず鏁版嵁
 import PublicBounced from '@components/BaseNav/PublicBounced/PublicBounced'
+import LayerFactory from '@components/LayerController/service/LayerFactory'
 export default {
   name: 'MapTemplate',
   components: {
@@ -129,12 +130,17 @@
       this.map = Sgis.initMap(mapcontainer)
       this.$refs.toolBox.map = this.map
 
+      window.popupComp = this.$refs.popup
+      var layerFactory = new LayerFactory({ L: window.L, map: this.map })
+      layerFactory.init()
+      window.layerFactory = layerFactory
+
       this.basemapHelper = Sgis.initBasemapsHelper(this.map) // 鍒濆鍖栧熀纭�搴曞浘鍔╂墜
       this.basemapHelper.initBasemap(this.config, false) // 绗簩涓弬鏁帮紝琛ㄧず鏄惁鍐呯綉搴曞浘
 
-      this.serviceLayerHelper = Sgis.initTileLayersHelper(this.map) // 鍒濆鍖栦笟鍔″簳鍥惧姪鎵�
-      console.log('-------' + this.$refs.popup.$el)
-      this.serviceLayerHelper.initServiceLayers(this.config, this.$refs.popup)
+      // this.serviceLayerHelper = Sgis.initTileLayersHelper(this.map) // 鍒濆鍖栦笟鍔″簳鍥惧姪鎵�
+      // console.log('-------' + this.$refs.popup.$el)
+      // this.serviceLayerHelper.initServiceLayers(this.config, this.$refs.popup)
 
       this.vectorLayerHelper = Sgis.initVectorLayersHelper(this.map) // 鍒濆鍖栧姩鎬佽绱犲浘灞傚姪鎵�
       this.vectorLayerHelper.initVectorLayers(this.config)

--
Gitblit v1.8.0