派生自 wuyushui/SewerAndRainNetwork

徐旺旺
2021-05-11 8d9c17cd5166ad31e3357070e95ee73002f34de5
src/components/LayerController/service/WmsLayerService.js
@@ -1,6 +1,7 @@
import AjaxUtils from '../../../utils/AjaxUtils'
import { PIPELINE_WMS } from '../../../conf/Constants'
import Popup from '@views/popup/Popup'
import List from '../../../utils/List'
/**
 * todo 得考虑一个图层配置了多个 wmsLayers的情况
@@ -27,12 +28,15 @@
    // 存放getfeatureinfo的图层组
    this.featureGroup = this.L.featureGroup({}).addTo(this.map)
    this.layers = []
    this.layers = new List()
    this.filters = new List()
    for (var i = 0; i < layersConfig.length; i++) {
      const config = layersConfig[i]
      for (var k in config) {
        if (k === 'wmsLayers') {
          this.layers.push(config[k])
      const typeName = config.typeName
      if (typeName) {
        this.layers.add(config.index, typeName)
        if (config.filter) {
          this.filters.addEnd(config.filter)
        }
      }
    }
@@ -46,42 +50,46 @@
  }
  add (config) {
    const wmsLayers = config.wmsLayers
    if (wmsLayers) {
      if (this.layers.indexOf(wmsLayers) < 0) {
        this.layers.push(config.wmsLayers)
        this.wmsLayer.setParams({ layers: this.layers.join(',') })
    const typeName = config.typeName
    if (typeName) {
      if (!this.layers.contains(typeName)) {
        this.layers.add(config.index, typeName)
        if (config.filter) {
          this.filters.addEnd(config.filter)
        }
        this.wmsLayer.setParams({ cql_filter: this.filters.join(' and ') })
      }
    }
  }
  remove (config) {
    const wmsLayers = config.wmsLayers
    for (var i = 0; i < this.layers.length; i++) {
      const layerName = this.layers[i]
      if (wmsLayers === layerName) {
        this.layers.splice(i, 1)
      }
    console.log(config)
    const typeName = config.typeName
    this.layers.remove(typeName)
    if (config.filter) {
      this.filters.remove(config.filter)
    }
    this.wmsLayer.setParams({ layers: this.layers.join(',') })
    this.wmsLayer.setParams({ cql_filter: this.filters.join(' and ') })
  }
  load (layers) {
    this.wmsLayer = this.L.tileLayer.wms(PIPELINE_WMS, {
      format: 'image/png', // 返回的数据格式
      transparent: true,
      layers: layers.join(',')
      layers: 'sewer:pipesegment', // this.layers.join(','),
      cql_filter: this.filters.join(' and ')
    }).addTo(this.map)
  }
  clickListener () {
    window.map.on('click', (e) => {
      console.log(e)
      this.featureGroup.clearLayers()
      var point = this.map.latLngToContainerPoint(e.latlng, this.map.getZoom())
      var size = this.map.getSize()
      // const bbox = this.L.latLngBounds(this.L.latLng(e.latlng.lng, e.latlng.lat)).toBBoxString()
      if (this.layers && this.layers.length > 0) {
      if (this.layers.length() > 0) {
        const params = Object.assign({
          LAYERS: this.layers.join(','),
          QUERY_LAYERS: this.layers.join(','),
@@ -94,13 +102,13 @@
        AjaxUtils.get4JsonDataByUrl(PIPELINE_WMS, params, (res) => {
          const features = res.data.features
          /**
             * {
             *     title: 'New Tab',
             *     name: newTabName,
             *     content: 'New Tab content'
             * }
             * @type {*[]}
             */
           * {
           *     title: 'New Tab',
           *     name: newTabName,
           *     content: 'New Tab content'
           * }
           * @type {*[]}
           */
          const popupDatas = []
          if (features) {
            for (var i = 0; i < features.length; i++) {
@@ -131,15 +139,20 @@
                autoClose: false
              })
              .openPopup() */
            window.$layer.open({
              content: {
                content: Popup, // 组件
                data: { // 传递的参数
                  datas: popupDatas
                }
              },
              title: '' // 标题
            })
            if (window.layerFactory.clickSwitch) {
              window.$layer.open({
                content: {
                  content: Popup, // 组件
                  data: { // 传递的参数
                    datas: popupDatas
                  }
                },
                title: '', // 标题
                left: e.originalEvent.clientX,
                top: e.originalEvent.clientY
              })
            }
            // this.popupComp.setDatas(popupDatas)
            // this.popupComp.setShow()
          }