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 = {}
|
}
|
|
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
|
// 判断是否已经加载过,加载过就 直接得到对象调用 显示函数
|
var layer = this.layers[code]
|
if (!layer) {
|
layer = this.L.featureGroup({}).addTo(this.map)
|
// 2. 判断类型
|
if (wfs) {
|
// 3. 实例化具体service
|
var wfsLayerService = new WfsLayerService(childConfig)
|
wfsLayerService.init(layer)
|
}
|
if (wms) {
|
var wmsLayerService = new WmsLayerService(childConfig)
|
wmsLayerService.init(layer)
|
}
|
// 请求业务数据接口
|
if (url) {
|
var busiLayerService = new BusiLayerService(childConfig)
|
busiLayerService.init(layer)
|
}
|
layer ? (this.layers[code] = layer) : console.log('LayerFactory:newLayer is null,please check !!!')
|
} 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
|