/* eslint-disable no-debugger */ /** * 创建图层相关的类 */ class ServiceLayerHelper { constructor (options) { this.map = options.map this.L = window.L this.loadedLayersMap = new Map() this.tileLayerWmslayerGroup = this.L.layerGroup().addTo(this.map) this.tileLayersWMTSArray = [] // 初始的WMTS集 this.tileLayersTileArray = [] // 初始的Tile集 this.tileLayersWMSArray = [] // 初始的WMS集 this.mapConfig = {} } getTileLayer (code) { return this.loadedLayersMap.get(code) } /** * 根据配置文件初始化业务底图 */ initServiceLayers (mapConfig) { this.mapConfig = mapConfig this._loadLayers(mapConfig) } /** * 按配置文件加载三种不同类型的 * @param {*} mapConfig * @param {*} isAddToMap */ _loadLayers (mapConfig, isAddToMap = true) { console.debug('ServiceLayerHelper加载参数:', mapConfig) for (let i = 0, len = mapConfig.mapConfig.ServiceLayers.length; i < len; ++i) { const opt = mapConfig.mapConfig.ServiceLayers[i] this.setArray(opt) if (opt.type === 'wmts') { opt.checked && this.loadWmtsLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) } else if (opt.type === 'wms') { opt.checked && this.loadWmsLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) } else if (opt.type === 'tile') { opt.checked && this.loadTileLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) } } } setArray (opt) { var type = opt.type if (type === 'wmts') { this.tileLayersWMTSArray.push(opt) } else if (type === 'wms') { this.tileLayersWMSArray.push(opt) } else if (type === 'tile') { this.tileLayersTileArray.push(opt) } } /** * 往地图中加入一个WMTS服务 * @param {}} options * @param {*} isAddToMap */ loadWmtsLayer (options, isAddToMap = true, config) { const layer = this.L.tileLayer(options.url, options.option) layer.config = config if (isAddToMap) { layer.addTo(this.map) } this.loadedLayersMap.set(options.code, layer) } /** * 往地图中加入一个WMS服务 * @param {}} options * @param {*} isAddToMap */ loadWmsLayer (options, isAddToMap = true, config) { const layer = this.L.tileLayer.wms(options.url, options.option) layer.config = config if (isAddToMap) { layer.addTo(this.tileLayerWmslayerGroup) } this.loadedLayersMap.set(options.code, layer) } /** * 往地图中加入一个TILE服务 * @param {}} options * @param {*} isAddToMap */ loadTileLayer (options, isAddToMap = true, config) { const layer = this.L.tileLayer(options.url, { layers: options.layers || 'all', // country format: options.format || 'image/png', transparent: options.true || true, crs: options.crs || this.L.CRS.EPSG4326, maxZoom: options.maxZoom || 21, minZoom: options.minZoom || 1, zoomOffset: options.zoomOffset || 0 }) layer.config = config if (isAddToMap) { layer.addTo(this.map) } this.loadedLayersMap.set(options.code, layer) } /** * 隐藏服务图层 * @param {*} name */ hideTileLayer (code) { if (this.loadedLayersMap) { const tileLayer = this.loadedLayersMap.get(code) this.map.removeLayer(tileLayer) } } /** * 展示服务图层 * @param {*} name */ showTileLayer (code) { if (this.loadedLayersMap) { const tileLayer = this.loadedLayersMap.get(code) this.map.addLayer(tileLayer) } } /** * 得到选中的图层列表 * @param mapConfig * @returns {[]} */ getCheckedLayers (mapConfig) { var checkedLayers = [] var serviceLayers = mapConfig.ServiceLayers for (var i = 0; i < serviceLayers.length; i++) { var serviceLayer = serviceLayers[i] var layers = serviceLayer.layers for (var j = 0; j < layers.length; j++) { var layer = layers[j] var checked = layer.checked if (checked) { checkedLayers.push(layer) } } } return checkedLayers } /** * 获取所有的TILE服务图层 */ getTileLayers () { return this.tileLayersTileArray } /** * 获取所有的WMTS服务图层 */ getWmtsLayers () { return this.tileLayersWMTSArray } /** * 获取所有的WMS服务图层 */ getWmsLayers () { return this.tileLayersWMSArray } /** * 根据线的选择,得到点的可选择图层数据 */ getFiltersGroup () { } /** * 通过code查找WMS的服务配置 * @param {} code wms服务配置的code */ getWMSConfig (code) { const mc = this.mapConfig for (let i = 0, len = mc.mapConfig.ServiceLayers.length; i < len; ++i) { if (code === mc.mapConfig.ServiceLayers[i].code || mc.mapConfig.ServiceLayers[i].type === 'wms') { return mc.mapConfig.ServiceLayers[i] } } return null } } export default ServiceLayerHelper