From 1ba44459ed390fbcb4b05dea06923e4df99d3acc Mon Sep 17 00:00:00 2001 From: wangrui <zephyrs0894@163.com> Date: 星期三, 23 十二月 2020 15:06:11 +0800 Subject: [PATCH] basemap图层控制ui --- src/components/helpers/BasemapHelper.js | 105 +++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 79 insertions(+), 26 deletions(-) diff --git a/src/components/helpers/BasemapHelper.js b/src/components/helpers/BasemapHelper.js index ddd6c32..498e54b 100644 --- a/src/components/helpers/BasemapHelper.js +++ b/src/components/helpers/BasemapHelper.js @@ -1,15 +1,15 @@ +/* eslint-disable no-debugger */ import AjaxUtils from '@/utils/AjaxUtils' -import CommonLayerLoad from '../mapmodules/CommonLayerLoad' /** * 搴曞浘绠$悊鍔╂墜锛岃礋璐e簳鍥惧垱寤哄強寮�鍏� */ class BasemapHelper{ - constructor(map, L) { - this.map = map - this.L = L + constructor(options) { + this.map = options.map + this.L = options.L this.basemapList = [] this.basemapMap = new Map() - this.basemapLayerGroup = L.layerGroup().addTo(map) + this.basemapLayerGroup = options.L.layerGroup().addTo(options.map) } /** @@ -18,10 +18,10 @@ * @param defBasemapName 鍒濆鍖栧畬鎴愬悗锛岄粯璁ゆ樉绀虹殑鍥惧眰 */ initBasemap = (mapConfig, isIntranet) => { - if(isIntranet) { - this._getToken(mapConfig); - }else { - // + if(isIntranet) { // 鍐呯綉 + this._getToken(mapConfig); // 鑾峰彇token鍚庯紝骞舵寜閰嶇疆鍔犺浇鍦板浘 + }else { // 澶栫綉 + this._createBasemapByConfig(mapConfig) } return this.basemapMap @@ -31,18 +31,17 @@ * 鑾峰彇鎵�鏈夌殑搴曞浘鍒楄〃 * @returns {null} 缁撴瀯锛歔{鍚嶇О, 鍥惧眰寮曠敤}] */ - getBasemapList = (map) => { - console.log(map) - return null + getBasemapList = () => { + return this.basemapList } /** * 閫氳繃鍚嶇О鑾峰彇搴曞浘瀵硅薄 * @param map 缁撴瀯锛歔{鍚嶇О, 鍥惧眰寮曠敤}] - * @param name 鍚嶇О + * @param code 鍚嶇О */ - getBasemap = (map, name) => { - console.log(map, name) + getBasemap = (map, code) => { + return this.basemapMap.get(code) } /** @@ -51,8 +50,15 @@ * @param layer 寰呮樉绀哄浘灞傚紩鐢� * @param isHideOthers 鏄惁鍏堝叧闂叾浠栧浘灞傦紝榛樿鏄痶rue */ - showBasemap = (map, layer, isHideOthers) => { - console.log(map, layer, isHideOthers) + showBasemap = (map, code, isHideOthers = true) => { + let basemap = this.basemapMap.get(code) + if(isHideOthers) { + for(let i = 0, len = this.basemapList.length; i < len; ++i){ + map.removeLayer(this.basemapList[i]) + } + } + map.addLayer(basemap.layer) + map.addLayer(basemap.annotation) } /** @@ -60,23 +66,70 @@ * @param map 鍦板浘瀵硅薄 * @param layer 寰呭叧闂浘灞傚紩鐢� */ - hideBasemap = (map, layer) => { - console.log(map, layer) + hideBasemap = (map, code) => { + let basemap = this.basemapMap.get(code) + map.removeLayer(basemap.layer) + map.removeLayer(basemap.annotation) } + // 鍏綉鍒涘缓鍦板浘閮ㄥ垎 + _createBasemapByConfig(mapConfig){ + console.log(mapConfig) + let internetBasemaps = mapConfig.mapConfig.InternetBaseMaps + for(let i = 0, len = internetBasemaps.length; i < len; ++i) { + let basemapConfig = internetBasemaps[i] + let basemapLayer = this.L.tileLayer(basemapConfig.map.url, basemapConfig.map.option) + let basemapAnnotationLayer = this.L.tileLayer(basemapConfig.annotation.url, basemapConfig.annotation.option) + + let basemap = { + code: basemapConfig.code, + name: basemapConfig.name, + conf: basemapConfig, + layer: basemapLayer, + annotation: basemapAnnotationLayer + } + + this.basemapList.push(basemap); + this.basemapMap.set(basemapConfig.code, basemap) + if(typeof basemapConfig.isAddToMap !== 'undefined' && basemapConfig.isAddToMap) { + this.basemapLayerGroup.addLayer(basemapLayer) + this.basemapLayerGroup.addLayer(basemapAnnotationLayer) + } + } + } + + // 鍐呯綉鍦板浘鍒涘缓閮ㄥ垎 + // 鑾峰彇鍐呯綉鍦板浘token锛屽苟鍔犺浇鍒板湴鍥句腑 _getToken = (mapConfig) => { let params = mapConfig.TokenConfig AjaxUtils.GetDataAsynByUrl(params.url, params.option, (token) => { - this._showTDT(token) + this._showTDT(token, mapConfig) }) } - _showTDT = (token) => { - let commonLayerLoad = new CommonLayerLoad() - const imgMapm = commonLayerLoad.loadIntranetImgMap(token) - const imgMapa = commonLayerLoad.loadIntranetImgMapCia(token) - this.basemapLayerGroup.addLayer(imgMapm) - this.basemapLayerGroup.addLayer(imgMapa) + // 鍐呯綉鍦板浘鍔犺浇锛屽苟鍔犺浇鍒板湴鍥� + _showTDT = (token, mapConfig) => { + let intranetBasemaps = mapConfig.mapConfig.IntranetBaseMaps + for(let i = 0, len = intranetBasemaps.length; i < len; ++i) { + let basemapConfig = intranetBasemaps[i] + let basemapLayer = this.L.tileLayer(basemapConfig.map.url, basemapConfig.map.option) + let basemapAnnotationLayer = this.L.tileLayer(basemapConfig.annotation.url, basemapConfig.annotation.option) + + let basemap = { + code: basemapConfig.code, + name: basemapConfig.name, + conf: basemapConfig, + layer: basemapLayer, + annotation: basemapAnnotationLayer + } + + this.basemapList.push(basemap); + this.basemapMap.set(basemapConfig.code, basemap) + if(typeof basemapConfig.isAddToMap !== 'undefined' && basemapConfig.isAddToMap) { + this.basemapLayerGroup.addLayer(basemapLayer) + this.basemapLayerGroup.addLayer(basemapAnnotationLayer) + } + } } } -- Gitblit v1.8.0