nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit 57e4143b83560fdc70242306ccbd519167e36341
parent 34d48fb4d1a2f91270b9327e1d177ba192230ec4
Author: Sergey Orlov <wladimirych@gmail.com>
Date:   Sat, 12 Dec 2020 21:30:51 +0100

jnx: make getLayerForJnx() aware of groupped layers

Diffstat:
Msrc/layers.js | 8+++++++-
Msrc/lib/leaflet.control.jnx/index.js | 22++++++++++++++--------
2 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/src/layers.js b/src/layers.js @@ -903,7 +903,11 @@ class LayerGroupWithOptions extends L.LayerGroup { ), new LayerCutlineOverview(getCutline('france'), 5, 'France Topo 250m (zoom ≥ 6)'), ], - {code: 'Ft', isOverlay: true} + { + code: 'Ft', + isOverlay: true, + isWrapper: true, + } ), }, { @@ -932,6 +936,7 @@ class LayerGroupWithOptions extends L.LayerGroup { { code: 'Gbt', isOverlay: true, + isWrapper: true, } ), }, @@ -996,6 +1001,7 @@ class LayerGroupWithOptions extends L.LayerGroup { { code: 'St', isOverlay: true, + isWrapper: true, } ), }, diff --git a/src/lib/leaflet.control.jnx/index.js b/src/lib/leaflet.control.jnx/index.js @@ -22,17 +22,23 @@ L.Control.JNX = L.Control.extend({ }, getLayerForJnx: function() { - let selectedLayer = {}; - for (let layerRec of this._layersControl._layers) { + for (let layerRec of this._layersControl._layers.slice().reverse()) { let layer = layerRec.layer; - if (this._map.hasLayer(layer) && layer.options && layer.options.jnx) { - selectedLayer = { - layer, - layerName: layerRec.name - }; + if (!this._map.hasLayer(layer) || !layer.options) { + continue; + } + if (layer.options.isWrapper) { + const layerName = layerRec.name; + for (const subLayer of layer.getLayers().slice().reverse()) { + if (subLayer.options?.jnx) { + return {layer: subLayer, layerName}; + } + } + } else if (layer.options.jnx) { + return {layer, layerName: layerRec.name}; } } - return selectedLayer; + return {}; }, estimateTilesCount: function(maxZoom) {