From 90bd1d10df12f458eb2e64e8de2b225f45d02153 Mon Sep 17 00:00:00 2001 From: 徐旺旺 <11530253@qq.com> Date: 星期三, 14 四月 2021 17:34:08 +0800 Subject: [PATCH] 管网、环保设施、附属设施搜索定位 --- src/components/LayerController/service/LayerFactory.js | 132 ++++++++++++++++++++++++++++++++++++++----- 1 files changed, 116 insertions(+), 16 deletions(-) diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js index d12719b..ae561e5 100644 --- a/src/components/LayerController/service/LayerFactory.js +++ b/src/components/LayerController/service/LayerFactory.js @@ -11,13 +11,54 @@ init (layerConfig) { // 1. 閬嶅巻layer config - for (var i = 0, l = layerConfig.length; i < l; i++) { - var config = layerConfig[i] - var layers = config.layers - layers && this.init(config.layers) + if (layerConfig) { + for (var i = 0; i < layerConfig.length; i++) { + var config = layerConfig[i] + var layers = config.layers + var childLayer = config.childLayer + layers && this.init(config.layers) + childLayer && this.init(config.childLayer) - var checked = config.checked - checked && this.load(config) + var checked = config.checked + checked && this.load(config) + checked && this.toggleZoomByConfig(config) + } + } + } + + /** + * 鎺у埗鏄剧ず鐨勭骇鍒� + * @param layerConfig + */ + initEvent (layerConfig) { + this.map.on('zoomend ', (e) => this.toggleZoomByLayer(layerConfig)) + } + + toggleZoomByLayer (layerConfig) { + var config = layerConfig + if (Array.isArray(layerConfig)) { + for (var i = 0, l = layerConfig.length; i < l; i++) { + config = layerConfig[i] + var layers = config.layers + var childLayer = config.childLayer + layers && this.toggleZoomByLayer(layers) + childLayer && this.toggleZoomByLayer(childLayer) + this.toggleZoomByConfig(config) + } + } else { + this.toggleZoomByConfig(layerConfig) + } + } + + toggleZoomByConfig (config) { + const zoom = this.map.getZoom() + var checked = config.checked + if (checked && config.minZoom) { + if (zoom > config.minZoom) { + this.show(config) + } else { + this.hide(config) + } } } @@ -71,18 +112,77 @@ } + 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) + }) + } + } + /** - * 璁剧疆index,绾垮湪鏈�涓嬮潰锛岀偣鍦ㄤ笂闈� - * @param layerGroup 鍥惧眰缁� - */ - setZIndex (layerGroup) { - var layers = layerGroup.getLayers() - if (layers.length > 0) { - var layer = layers[0] - if (layer.feature && (layer.feature.geometry.type === 'LineString' || layer.feature.geometry.type === 'MultiLineString')) { - layerGroup.bringToBack() + * todo 杩欓噷鏃犳晥锛岃矊浼兼槸鍥犱负geojson鍔犺浇鍒板湴鍥句篃鏄釜layergroup + * + * 璁剧疆index,绾垮湪鏈�涓嬮潰锛岀偣鍦ㄤ笂闈� + * @param layerGroup 鍥惧眰缁� + */ + setZIndex (layer) { + if (Array.isArray(layer)) { + for (var i = 0; i < layer.length; i++) { + this.setZIndex(layer[i]) + } + } else { + if (layer.getLayers) { + this.setZIndex(layer.getLayers()) } else { - layerGroup.bringToFront() + if (layer.feature && (layer.feature.geometry.type === 'LineString' || layer.feature.geometry.type === 'MultiLineString')) { + layer.bringToBack && layer.bringToBack() + } else { + layer.bringToFront && layer.bringToFront() + } } } } -- Gitblit v1.8.0