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