From a6da1ff6d9b294f46955da5d5cff30919467fa8b Mon Sep 17 00:00:00 2001 From: 徐旺旺 <11530253@qq.com> Date: 星期一, 22 二月 2021 12:40:40 +0800 Subject: [PATCH] 修改图层控制 --- src/components/helpers/BasemapHelper.js | 125 +++++++++++++++++++++++++++++------------ 1 files changed, 88 insertions(+), 37 deletions(-) diff --git a/src/components/helpers/BasemapHelper.js b/src/components/helpers/BasemapHelper.js index ddd6c32..a430df0 100644 --- a/src/components/helpers/BasemapHelper.js +++ b/src/components/helpers/BasemapHelper.js @@ -1,16 +1,17 @@ +/* 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 - this.basemapList = [] - this.basemapMap = new Map() - this.basemapLayerGroup = L.layerGroup().addTo(map) - } +class BasemapHelper { + constructor (options) { + this.map = options.map + this.L = window.L + this.basemapList = [] + this.basemapMap = new Map() + this.basemapLayerGroup = this.L.layerGroup().addTo(options.map) + } /** * 璇ユ柟娉曡礋璐e悇绉嶅簳鍥惧姞杞藉埌鍦板浘涓� @@ -18,65 +19,115 @@ * @param defBasemapName 鍒濆鍖栧畬鎴愬悗锛岄粯璁ゆ樉绀虹殑鍥惧眰 */ initBasemap = (mapConfig, isIntranet) => { - if(isIntranet) { - this._getToken(mapConfig); - }else { - // - } + if (isIntranet) { // 鍐呯綉 + this._getToken(mapConfig) // 鑾峰彇token鍚庯紝骞舵寜閰嶇疆鍔犺浇鍦板浘 + } else { // 澶栫綉 + this._createBasemapByConfig(mapConfig) + } - return this.basemapMap + return this.basemapMap } /** * 鑾峰彇鎵�鏈夌殑搴曞浘鍒楄〃 * @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) } /** * 鏄剧ず鏌愪釜鍥惧眰 - * @param map 鍦板浘瀵硅薄 * @param layer 寰呮樉绀哄浘灞傚紩鐢� * @param isHideOthers 鏄惁鍏堝叧闂叾浠栧浘灞傦紝榛樿鏄痶rue */ - showBasemap = (map, layer, isHideOthers) => { - console.log(map, layer, isHideOthers) + showBasemap = (code, showAnnotation, isHideOthers = true) => { + const basemap = this.basemapMap.get(code) + if (isHideOthers) { + this.basemapLayerGroup.clearLayers() + } + this.basemapLayerGroup.addLayer(basemap.layer) + if (showAnnotation) { + this.basemapLayerGroup.addLayer(basemap.annotation) + } } /** * 闅愯棌鏌愪釜鍥惧眰 - * @param map 鍦板浘瀵硅薄 * @param layer 寰呭叧闂浘灞傚紩鐢� */ - hideBasemap = (map, layer) => { - console.log(map, layer) + hideBasemap = (code) => { + const basemap = this.basemapMap.get(code) + this.map.removeLayer(basemap.layer) + this.map.removeLayer(basemap.annotation) } + // 鍏綉鍒涘缓鍦板浘閮ㄥ垎 + _createBasemapByConfig (mapConfig) { + const internetBasemaps = mapConfig.mapConfig.InternetBaseMaps + for (let i = 0, len = internetBasemaps.length; i < len; ++i) { + const basemapConfig = internetBasemaps[i] + const basemapLayer = this.L.tileLayer(basemapConfig.map.url, basemapConfig.map.option) + const basemapAnnotationLayer = this.L.tileLayer(basemapConfig.annotation.url, basemapConfig.annotation.option) + + const 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) - }) + const params = mapConfig.TokenConfig + AjaxUtils.GetDataAsynByUrl(params.url, params.option, (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) => { + const intranetBasemaps = mapConfig.mapConfig.IntranetBaseMaps + for (let i = 0, len = intranetBasemaps.length; i < len; ++i) { + const basemapConfig = intranetBasemaps[i] + const basemapLayer = this.L.tileLayer(basemapConfig.map.url, basemapConfig.map.option) + const basemapAnnotationLayer = this.L.tileLayer(basemapConfig.annotation.url, basemapConfig.annotation.option) + + const 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