派生自 wuyushui/SewerAndRainNetwork

zhangshuaibao
2021-04-15 c169ee517f0620f86689ea08db5e3e24f01446bc
src/components/LayerController/service/LayerFactory.js
@@ -1,6 +1,7 @@
import WfsLayerService from './WfsLayerService'
import BusiLayerService from './BusiLayerService'
import WmsLayerService from './WmsLayerService'
import EventLayerService from './EventLayerService'
class LayerFactory {
  constructor (options) {
@@ -27,9 +28,9 @@
  }
  /**
   * 控制显示的级别
   * @param layerConfig
   */
     * 控制显示的级别
     * @param layerConfig
     */
  initEvent (layerConfig) {
    this.map.on('zoomend ', (e) => this.toggleZoomByLayer(layerConfig))
  }
@@ -67,30 +68,35 @@
    var wfs = config.wfs
    var wms = config.wms
    var url = config.url
    var checked = config.checked
    // 判断是否已经加载过,加载过就 直接得到对象调用 显示函数
    var layer = this.layers[code]
    if (!layer) {
      layer = this.L.featureGroup({}).addTo(this.map)
    // todo if是不是太多了
    if (checked) {
      if ((wfs || wms || url)) {
        if (layer) {
          this.show(code)
        } else {
          layer = this.L.featureGroup({}).addTo(this.map)
          this.layers[code] = layer
        }
      }
      // 2. 判断类型
      if (wfs) {
        // 3. 实例化具体service
        var wfsLayerService = new WfsLayerService(config)
        wfsLayerService.init(layer)
        this.setZIndex(layer)
      }
      if (wms) {
      } else if (wms) {
        var wmsLayerService = new WmsLayerService(config)
        wmsLayerService.init(layer)
      }
      // 请求业务数据接口
      if (url) {
      } else if (url) {
        var busiLayerService = new BusiLayerService(config)
        busiLayerService.init(layer)
      }
      layer ? (this.layers[code] = layer) : console.log('LayerFactory:newLayer is null,please check !!!')
    } else {
      this.show(code)
    }
    var eventLayerService = new EventLayerService(config)
    eventLayerService.init()
  }
  show (config) {
@@ -106,6 +112,7 @@
  hide (config) {
    var layer = this.layers[config.code]
    layer && this.map.removeLayer(layer)
    this.load(config)
  }
  toggle (code) {
@@ -130,25 +137,25 @@
      })
    }
    /* for (var k in this.layers) {
      var layerGroup = this.layers[k]
      layerGroup.eachLayer(function (layer) {
        console.log(layer)
        console.log(layer.getAttribution())
      })
      var layers = layerGroup.getLayers()
      if (layers) {
        for (var m = 0; m < layers.length; m++) {
          var layer = layers[m]
          console.log(layer)
          console.log(layer.getLayerId(val.id))
          /!* var feature = layer.feature
          if (feature.id === layerId) {
            this.map.flyToBounds(bound)
            return layer
          } *!/
        }
      }
    } */
          var layerGroup = this.layers[k]
          layerGroup.eachLayer(function (layer) {
            console.log(layer)
            console.log(layer.getAttribution())
          })
          var layers = layerGroup.getLayers()
          if (layers) {
            for (var m = 0; m < layers.length; m++) {
              var layer = layers[m]
              console.log(layer)
              console.log(layer.getLayerId(val.id))
              /!* var feature = layer.feature
              if (feature.id === layerId) {
                this.map.flyToBounds(bound)
                return layer
              } *!/
            }
          }
        } */
    return null
  }
@@ -164,11 +171,11 @@
  }
  /**
   * todo 这里无效,貌似是因为geojson加载到地图也是个layergroup
   *
   * 设置index,线在最下面,点在上面
   * @param layerGroup 图层组
   */
     * todo 这里无效,貌似是因为geojson加载到地图也是个layergroup
     *
     * 设置index,线在最下面,点在上面
     * @param layerGroup 图层组
     */
  setZIndex (layer) {
    if (Array.isArray(layer)) {
      for (var i = 0; i < layer.length; i++) {