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