派生自 wuyushui/SewerAndRainNetwork

徐旺旺
2021-04-20 704714d2bbb1cf97cb16d452332c4334bc78a24c
src/components/LayerController/service/LayerFactory.js
@@ -8,6 +8,7 @@
    this.map = window.map
    this.layers = {}
    this.layersLogic = {}
    this.minZoomLayers = {}
  }
  init (layerConfig) {
@@ -21,10 +22,17 @@
        layers && this.init(config.layers)
        childLayer && this.init(config.childLayer)
        this.initMinZoom(config)
        this.loadLogic(config)
        this.toggleZoomByConfig(config)
        checked && this.show(config)
      }
    }
  }
  initMinZoom (config) {
    const minZoom = parseInt(config.minZoom)
    if (minZoom) {
      this.minZoomLayers[minZoom] = config
    }
  }
@@ -55,7 +63,8 @@
    var layer = (logic && logic.initLayer && logic.initLayer((this.L))) || this.L.featureGroup({})
    if (logic.bindTooltip) {
      layer.bindTooltip(logic.bindTooltip)
      // 全局tips位置
      layer.bindTooltip(logic.bindTooltip, { direction: 'top', offset: [0, -15], sticky: false })
    }
    // 调用click事件
    if (logic.clickListener) {
@@ -92,32 +101,19 @@
     * @param layerConfig
     */
  initEvent (layerConfig) {
    this.map.on('zoomend ', (e) => this.toggleZoomByLayer(layerConfig))
    // this.map.on('zoomend ', () => this.toggleByZoom())
  }
  toggleZoomByLayer (layerConfig) {
    var config = layerConfig
    if (Array.isArray(layerConfig)) {
      for (var i = 0, l = layerConfig.length; i < l; i++) {
        config = layerConfig[i]
        var layers = config.layers
        var childLayer = config.childLayer
        layers && this.toggleZoomByLayer(layers)
        childLayer && this.toggleZoomByLayer(childLayer)
        this.toggleZoomByConfig(config)
      }
    } else {
      this.toggleZoomByConfig(layerConfig)
    }
  }
  toggleZoomByConfig (config) {
  toggleByZoom () {
    const zoom = this.map.getZoom()
    var checked = config.checked
    if (checked && config.minZoom) {
      if (zoom > config.minZoom) {
    for (var k in this.minZoomLayers) {
      const config = this.minZoomLayers[k]
      const checked = config.checked
      console.log(zoom)
      console.log(k)
      if (checked && zoom > k) {
        this.show(config)
      } else {
      } else if (checked && zoom < k) {
        this.hide(config)
      }
    }