/* eslint-disable no-debugger */ /** * 创建图层相关的类 */ import L from 'leaflet' class ServiceLayerHelper { constructor(options){ this.map = options.map this.L = options.L this.tileLayersMap = new Map() this.tileLayersWMSArray = [] this.tileLayersWMTSArray = [] this.tileLayersTileArray = [] this.mapConfig = {} } /** * 根据配置文件初始化业务底图 */ 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) { let opt = mapConfig.mapConfig.ServiceLayers[i] if(opt.type === 'wmts') { this.loadWmtsLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) }else if(opt.type === 'wms') { this.loadWmsLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) }else if(opt.type === 'tile') { this.loadTileLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) } } } /** * 往地图中加入一个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.tileLayersMap.set(options.code, layer) this.tileLayersWMTSArray.push(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.map) } this.tileLayersMap.set(options.code, layer) this.tileLayersWMSArray.push(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 || 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.tileLayersMap.set(options.code , layer) this.tileLayersTileArray.push(layer) } /** * 隐藏服务图层 * @param {*} name */ hideTileLayer(code){ if(this.tileLayersMap){ let tileLayer = this.tileLayersMap.get(code) this.map.removeLayer(tileLayer) } } /** * 展示服务图层 * @param {*} name */ showTileLayer(code){ if(this.tileLayersMap){ let tileLayer = this.tileLayersMap.get(code) this.map.addLayer(tileLayer) } } /** * 获取所有的TILE服务图层 */ getTileLayers(){ return this.tileLayersTileArray } /** * 获取所有的WMTS服务图层 */ getWmtsLayers(){ return this.tileLayersWMTSArray } /** * 获取所有的WMS服务图层 */ getWmsLayers(){ return this.tileLayersWMSArray } /** * 通过code查找WMS的服务配置 * @param {} code wms服务配置的code */ getWMSConfig(code){ let 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