From 72e8ced67fe06adf794678a03d95bc1eb0947d4e Mon Sep 17 00:00:00 2001 From: 徐旺旺 <11530253@qq.com> Date: 星期四, 15 四月 2021 17:34:05 +0800 Subject: [PATCH] 弹框组件初步,管线动画控制,默认值修改 --- src/components/LayerController/service/LayerFactory.js | 111 +++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 75 insertions(+), 36 deletions(-) diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js index 593b5fd..d475fb6 100644 --- a/src/components/LayerController/service/LayerFactory.js +++ b/src/components/LayerController/service/LayerFactory.js @@ -1,6 +1,7 @@ import WfsLayerService from './WfsLayerService' import BusiLayerService from './BusiLayerService' import WmsLayerService from './WmsLayerService' +import EventLayerService from './EventLayerService' class LayerFactory { constructor (options) { @@ -21,15 +22,15 @@ var checked = config.checked checked && this.load(config) - checked && this.toggleZoomByConfnig(config) + checked && this.toggleZoomByConfig(config) } } } /** - * 鎺у埗鏄剧ず鐨勭骇鍒� - * @param layerConfig - */ + * 鎺у埗鏄剧ず鐨勭骇鍒� + * @param layerConfig + */ initEvent (layerConfig) { this.map.on('zoomend ', (e) => this.toggleZoomByLayer(layerConfig)) } @@ -43,14 +44,14 @@ var childLayer = config.childLayer layers && this.toggleZoomByLayer(layers) childLayer && this.toggleZoomByLayer(childLayer) - this.toggleZoomByConfnig(config) + this.toggleZoomByConfig(config) } } else { - this.toggleZoomByConfnig(layerConfig) + this.toggleZoomByConfig(layerConfig) } } - toggleZoomByConfnig (config) { + toggleZoomByConfig (config) { const zoom = this.map.getZoom() var checked = config.checked if (checked && config.minZoom) { @@ -67,30 +68,35 @@ var wfs = config.wfs var wms = config.wms var url = config.url + var checked = config.checked // 鍒ゆ柇鏄惁宸茬粡鍔犺浇杩囷紝鍔犺浇杩囧氨 鐩存帴寰楀埌瀵硅薄璋冪敤 鏄剧ず鍑芥暟 var layer = this.layers[code] - if (!layer) { - layer = this.L.featureGroup({}).addTo(this.map) + // todo if鏄笉鏄お澶氫簡 + if (checked) { + if ((wfs || wms || url)) { + if (layer) { + this.show(code) + } else { + layer = this.L.featureGroup({}).addTo(this.map) + this.layers[code] = layer + } + } // 2. 鍒ゆ柇绫诲瀷 if (wfs) { // 3. 瀹炰緥鍖栧叿浣搒ervice var wfsLayerService = new WfsLayerService(config) wfsLayerService.init(layer) this.setZIndex(layer) - } - if (wms) { + } else if (wms) { var wmsLayerService = new WmsLayerService(config) wmsLayerService.init(layer) - } - // 璇锋眰涓氬姟鏁版嵁鎺ュ彛 - if (url) { + } else if (url) { var busiLayerService = new BusiLayerService(config) busiLayerService.init(layer) } - layer ? (this.layers[code] = layer) : console.log('LayerFactory锛歯ewLayer is null锛宲lease check !!!') - } else { - this.show(code) } + var eventLayerService = new EventLayerService(config) + eventLayerService.init() } show (config) { @@ -106,37 +112,70 @@ hide (config) { var layer = this.layers[config.code] layer && this.map.removeLayer(layer) + this.load(config) } toggle (code) { } - flyByLayerId (layerId, bound) { - for (var k in this.layers) { - var layerGroup = this.layers[k] - var layers = layerGroup.getLayers() - if (layers) { - for (var m = 0; m < layers.length; m++) { - var layer = layers[m] - console.log(layer.toGeoJSON()) - /* var feature = layer.feature - if (feature.id === layerId) { - this.map.flyToBounds(bound) - return layer - } */ + flyByLayerId (code, id) { + const layer = this.layers[code] + + if (layer.eachLayer) { + layer.eachLayer(function (layer) { + const layers = layer.getLayers() + for (var i = 0; i < layers.length; i++) { + const lay = layers[i] + const feature = lay.feature + lay.closePopup() + if (feature.id === id) { + lay.openPopup() + break + } } - } + }) } + /* for (var k in this.layers) { + var layerGroup = this.layers[k] + layerGroup.eachLayer(function (layer) { + console.log(layer) + console.log(layer.getAttribution()) + }) + var layers = layerGroup.getLayers() + if (layers) { + for (var m = 0; m < layers.length; m++) { + var layer = layers[m] + console.log(layer) + console.log(layer.getLayerId(val.id)) + /!* var feature = layer.feature + if (feature.id === layerId) { + this.map.flyToBounds(bound) + return layer + } *!/ + } + } + } */ return null } + findLayerById (layer, id) { + const layers = layer.getLayers + if (layers) { + this.findLayerById(layer.getLayers(), id) + } else { + layer.eachLayer(function (layer) { + console.log(layer) + }) + } + } + /** - * todo 杩欓噷鏃犳晥锛岃矊浼兼槸鍥犱负geojson鍔犺浇鍒板湴鍥句篃鏄釜layergroup - * - * 璁剧疆index,绾垮湪鏈�涓嬮潰锛岀偣鍦ㄤ笂闈� - * @param layerGroup 鍥惧眰缁� - */ + * todo 杩欓噷鏃犳晥锛岃矊浼兼槸鍥犱负geojson鍔犺浇鍒板湴鍥句篃鏄釜layergroup + * + * 璁剧疆index,绾垮湪鏈�涓嬮潰锛岀偣鍦ㄤ笂闈� + * @param layerGroup 鍥惧眰缁� + */ setZIndex (layer) { if (Array.isArray(layer)) { for (var i = 0; i < layer.length; i++) { -- Gitblit v1.8.0