派生自 wuyushui/SewerAndRainNetwork

徐旺旺
2021-04-14 3d7cb6aa38722ecf35f29ed880fdcc7efecbf323
点击定位
2个文件已修改
102 ■■■■ 已修改文件
src/components/LayerController/service/LayerFactory.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/topicSearch/SewersSearch.vue 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/LayerController/service/LayerFactory.js
@@ -12,7 +12,7 @@
  init (layerConfig) {
    // 1. 遍历layer config
    if (layerConfig) {
      for (var i = 0, l = layerConfig.length; i < l; i++) {
      for (var i = 0; i < layerConfig.length; i++) {
        var config = layerConfig[i]
        var layers = config.layers
        var childLayer = config.childLayer
@@ -112,6 +112,25 @@
  }
  flyByLayerId (layerId, bound) {
    for (var k in this.layers) {
      var layerGroup = this.layers[k]
      var layers = layerGroup.getLayers()
      if (layers) {
        for (var m = 0; m < layers.length; m++) {
          var layer = layers[m]
          console.log(layer.toGeoJSON())
          /* var feature = layer.feature
          if (feature.id === layerId) {
            this.map.flyToBounds(bound)
            return layer
          } */
        }
      }
    }
    return null
  }
  /**
   * todo 这里无效,貌似是因为geojson加载到地图也是个layergroup
   *
src/components/panel/topicSearch/SewersSearch.vue
@@ -6,24 +6,22 @@
        <div class="search-panel ">
          <el-form ref="form" :model="form" label-width="90px" class="search-form">
            <el-form-item label="设施类型:" size="mini" class="search-panel-item">
              <el-select style="width: 100%" v-model="form.pipelineType" @change="handlePipelineType"
                         :popper-class="'select-down'">
              <el-select style="width: 100%"  v-model="form.pipelineType" @change="handlePipelineType"  :popper-class="'select-down'">
                <el-option
                    v-for="item in pipelineTypeOptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
                        v-for="item in items"
                        :key="item.code"
                        :label="item.name"
                        :value="item.name">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item :label="form.pipelineType+':'" size="mini">
              <el-select style="width: 100%" v-model="form.dataType" @change="handleDataType"
                         :popper-class="'select-down'">
              <el-select style="width: 100%"  v-model="form.dataType"  @change="handleDataType" :popper-class="'select-down'">
                <el-option
                    v-for="item in dataTypeOptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
                        v-for="item in subItems"
                        :key="item.code"
                        :label="item.name"
                        :value="item.name">
                </el-option>
              </el-select>
            </el-form-item>
@@ -69,7 +67,11 @@
</template>
<script>
import { PipelineTypeOptions } from '@/conf/layers/LayerSewers'
import { LayerPipeLines } from '@src/conf/layers/LayerPipeLines'
import { LayerFsss } from '@src/conf/layers/LayerFsss'
import { LayerHbss } from '@src/conf/layers/LayerHbss'
import { LayerPk } from '@src/conf/layers/LayerPk'
import { LayerArea } from '@src/conf/layers/LayerArea'
import WfsHelper from '@components/helpers/WfsHelper'
import AjaxUtils from '@utils/AjaxUtils'
@@ -87,18 +89,13 @@
      activeName: 'first',
      gdVisible: true,
      list: [],
      labelList: PipelineTypeOptions[0].labelList,
      items: [LayerPipeLines, LayerFsss, LayerHbss, LayerPk, LayerArea],
      subItems: LayerPipeLines.layers,
      total: 0,
      pipelineTypeOptions: PipelineTypeOptions,
      dataTypeOptions: PipelineTypeOptions[0].options,
      form: {
        pipelineType: PipelineTypeOptions[0].label,
        dataType: PipelineTypeOptions[0].options[0].label,
        query: PipelineTypeOptions[0].options[0],
        keyword: '研究院01路YS000001'
        // ,
        // size: 10,
        // current: 1
        pipelineType: '管网',
        dataType: '',
        keyword: ''
      },
      // pageSize: 10,
      // current: 1,
@@ -112,32 +109,19 @@
      console.log(tab, event)
    },
    handlePipelineType (val) {
      this.pipelineTypeOptions.forEach((itm) => {
        if (val === itm.value) {
          this.dataTypeOptions = itm.options
          this.form.pipelineType = itm.label
          this.form.labelList = itm.labelList
      for (var i = 0; i < this.items.length; i++) {
        const item = this.items[i]
        if (val === item.name) {
          this.subItems = item.layers
          return
        }
      })
      this.form.dataType = this.dataTypeOptions[0].label
      this.form.key = this.dataTypeOptions[0].key
    },
    handleDataType (val) {
      this.dataTypeOptions.forEach((itm) => {
        if (val === itm.value) {
          this.form.query = itm
        }
      })
      }
    },
    async handleSearch () {
      const param = {
        pipelineType: this.form.pipelineType,
        dataType: this.form.dataType
      }
      console.log(param)
      var wfsHelper = new WfsHelper()
      wfsHelper.addTypeName(this.form.query.layerName)
      wfsHelper.addLike(this.form.query.key, this.form.keyword)
      // todo 现在管网还没区分开类型,后面改
      wfsHelper.addTypeName('管网')
      wfsHelper.addLike('name', this.form.keyword)
      // const _this = this
      const res = await AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {})
      if (res instanceof Object && Object.prototype.hasOwnProperty.call(res, 'features')) {
@@ -145,11 +129,10 @@
      }
    },
    handleLocation (val) {
      console.log(val)
      const bound = this.L.geoJSON([val], {}).getBounds()
      var layer = window.serviceLayerHelper.getByLayerId(val.id)
      layer && layer.openPopup()
      this.$store.state.map.map.flyToBounds(bound)
      // var layer = window.layerFactory.flyByLayerId(val.id, bound)
      window.map.flyToBounds(bound)
      // layer && layer.openPopup()
    }
  }
}