/* 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.tileLayersArray = [] this.mapConfig = {} } /** * 根据配置文件初始化业务底图 */ initServiceLayers(mapConfig){ console.log(mapConfig) this.mapConfig = mapConfig this._loadLayers(mapConfig) } _loadLayers(mapConfig, isAddToMap = true){ console.debug('ServiceLayerHelper加载参数:',mapConfig) this.loadTileLayer(mapConfig, isAddToMap) this.loadWmtsLayer(mapConfig, isAddToMap) this.loadWmtsLayer(mapConfig, isAddToMap) } /** * 往地图中加入一个tile服务 * @param {}} options * @param {*} isAddToMap */ loadWmtsLayer(options, isAddToMap = true) { for(let i = 0, len = options.mapConfig.ServiceLayers.length; i < len; ++i) { let opt = options.mapConfig.ServiceLayers[i] if(opt.type !== 'wmts') { continue } const layer = this.L.tileLayer(opt.url, opt.option); if(isAddToMap) { layer.addTo(this.map) } this.tileLayersMap.set(opt.code, layer) this.tileLayersArray.push(layer) } } /** * 往地图中加入一个WMS服务 * @param {}} options * @param {*} isAddToMap */ loadWmsLayer(options, isAddToMap = true) { for(let i = 0, len = options.mapConfig.ServiceLayers.length; i < len; ++i) { let opt = options.mapConfig.ServiceLayers[i] if(opt.type !== 'wms') { continue } const layer =this.L.tileLayer.wms(opt.url, opt.option); if(isAddToMap) { layer.addTo(this.map) } this.tileLayersMap.set(opt.code, layer) this.tileLayersArray.push(layer) } } /** * 往地图中加入一个WMS服务 * @param {}} options * @param {*} isAddToMap */ loadTileLayer(options, isAddToMap = true) { for(let i = 0, len = options.mapConfig.ServiceLayers.length; i < len; ++i) { let opt = options.mapConfig.ServiceLayers[i] if(opt.type !== 'tile') { continue } const layer =this.L.tileLayer(opt.url, { layers: opt.layers || 'all',//country format: opt.format || "image/png", transparent: opt.true || true, crs:opt.crs || L.CRS.EPSG4326, maxZoom: opt.maxZoom || 21, minZoom: opt.minZoom || 1, zoomOffset: opt.zoomOffset || 0 }); if(isAddToMap) { layer.addTo(this.map) } this.tileLayersMap.set(opt.code , layer) this.tileLayersArray.push(layer) } } /** * 隐藏服务图层 * @param {*} name */ hideTileLayer(name){ if(this.tileLayersMap){ let tileLayer = this.tileLayersMap.get(name) this.map.removeLayer(tileLayer) } } /** * 获取所有的服务图层 */ getTileLayers(){ return this.tilelayersArray } } export default ServiceLayerHelper