| | |
| | | /* eslint-disable no-debugger */ |
| | | /** |
| | | * 创建图层相关的类 |
| | | */ |
| | | import L from 'leaflet' |
| | | |
| | | class ServiceLayerHelper { |
| | | constructor(options){ |
| | | this.map = options.map |
| | | this.tileLayersMap = new Map() |
| | | this.tileLayersArray = [] |
| | | } |
| | | constructor (options) { |
| | | this.map = options.map |
| | | this.L = options.L |
| | | this.tileLayersMap = new Map() |
| | | this.tileLayersWMSArray = [] |
| | | this.tileLayerWmslayerGroup = L.layerGroup().addTo(this.map) |
| | | this.tileLayersWMTSArray = [] |
| | | this.tileLayersTileArray = [] |
| | | this.mapConfig = {} |
| | | } |
| | | |
| | | /** |
| | | * 往地图中加入一个tile服务 |
| | | * @param {}} options |
| | | * @param {*} isAddToMap |
| | | getTileLayer (code) { |
| | | return this.tileLayersMap.get(code) |
| | | } |
| | | |
| | | /** |
| | | * 根据配置文件初始化业务底图 |
| | | */ |
| | | loadWmtsLayer(options, isAddToMap) { |
| | | const layer =L.tileLayer.wmts(options.url, { |
| | | layers: options.layers || 'all',//country |
| | | format: options.format || "image/png", |
| | | transparent: options.true || true, |
| | | crs:options.crs || L.CRS.EPSG4326 |
| | | }); |
| | | |
| | | if(isAddToMap) { |
| | | layer.addTo(this.map) |
| | | } |
| | | this.tileLayersMap.put(options.name, layer) |
| | | this.tileLayersArray.push(layer) |
| | | 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] |
| | | 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 |
| | | * @param {}} options |
| | | * @param {*} isAddToMap |
| | | */ |
| | | loadWmsLayer(options, isAddToMap) { |
| | | const layer =L.tileLayer.wms(options.url, { |
| | | layers: options.layers || 'all',//country |
| | | format: options.format || "image/png", |
| | | transparent: options.true || true, |
| | | crs:options.crs || L.CRS.EPSG4326 |
| | | }); |
| | | |
| | | if(isAddToMap) { |
| | | layer.addTo(this.map) |
| | | } |
| | | this.tileLayersMap.put(options.name, layer) |
| | | this.tileLayersArray.push(layer) |
| | | } |
| | | loadWmsLayer (options, isAddToMap = true, config) { |
| | | const layer = this.L.tileLayer.wms(options.url, options.option) |
| | | layer.config = config |
| | | |
| | | /** |
| | | * 往地图中加入一个WMS服务 |
| | | * @param {}} options |
| | | * @param {*} isAddToMap |
| | | if (isAddToMap) { |
| | | layer.addTo(this.tileLayerWmslayerGroup) |
| | | } |
| | | this.tileLayersMap.set(options.code, layer) |
| | | this.tileLayersWMSArray.push(layer) |
| | | } |
| | | |
| | | /** |
| | | * 往地图中加入一个TILE服务 |
| | | * @param {}} options |
| | | * @param {*} isAddToMap |
| | | */ |
| | | loadTileLayer(options, isAddToMap) { |
| | | const layer =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 |
| | | }); |
| | | |
| | | if(isAddToMap) { |
| | | layer.addTo(this.map) |
| | | } |
| | | this.tileLayersMap.put(options.name, layer) |
| | | this.tileLayersArray.push(layer) |
| | | } |
| | | 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 |
| | | |
| | | hideTileLayer(name){ |
| | | if(this.tileLayersMap){ |
| | | let tileLayer = this.tileLayersMap.get(name) |
| | | this.map.removeLayer(tileLayer) |
| | | } |
| | | if (isAddToMap) { |
| | | layer.addTo(this.map) |
| | | } |
| | | this.tileLayersMap.set(options.code, layer) |
| | | this.tileLayersTileArray.push(layer) |
| | | } |
| | | |
| | | getTileLayers(){ |
| | | return this.tilelayersArray |
| | | /** |
| | | * 隐藏服务图层 |
| | | * @param {*} name |
| | | */ |
| | | hideTileLayer (code) { |
| | | if (this.tileLayersMap) { |
| | | const tileLayer = this.tileLayersMap.get(code) |
| | | this.map.removeLayer(tileLayer) |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 展示服务图层 |
| | | * @param {*} name |
| | | */ |
| | | showTileLayer (code) { |
| | | if (this.tileLayersMap) { |
| | | const 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) { |
| | | 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 |