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. 实例化具体service
|
// 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
|