nakarte

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

commit 5f99bfa5a8f357ae0e2e144391d0dadac92142a2
parent 01e682802d1ad4733f65c6a3ebc740290e262089
Author: Sergej Orlov <wladimirych@gmail.com>
Date:   Wed,  8 Mar 2017 22:57:19 +0300

[custom layers] fixed enabling custom layers when serialized layer string not identical to new one

Diffstat:
Msrc/lib/leaflet.control.layers.configure/index.js | 22+++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/lib/leaflet.control.layers.configure/index.js b/src/lib/leaflet.control.layers.configure/index.js @@ -214,8 +214,11 @@ function enableConfig(control, layers) { unserializeState: function(values) { if (values) { - values.forEach((code) => this.loadCustomLayerFromString(code)); - for (let layer of this._allLayers) { + values = values.map((code) => { + let newCode = this.loadCustomLayerFromString(code); + return newCode || code; + }); + for (let layer of [...this._allLayers, ...this._customLayers()]) { if (layer.layer.options && values.includes(layer.layer.options.code)) { layer.enabled = true; } @@ -323,7 +326,7 @@ ${buttonsHtml}`; .replace(/\//g, '_'); } - return encodeUrlSafeBase64(s); + return '-cs' + encodeUrlSafeBase64(s); }, customLayerExists: function(fieldValues, ignoreLayer) { @@ -380,7 +383,7 @@ ${buttonsHtml}`; scaleDependent: fieldValues.scaleDependent, print: true, jnx: true, - code: '-cs' + serialized, + code: serialized, noCors: true } ); @@ -459,18 +462,23 @@ ${buttonsHtml}`; }, loadCustomLayerFromString: function(s) { - var m, fieldValues; - m = s.match(/^-cs(.+)$/); + let fieldValues; + const m = s.match(/^-cs(.+)$/); if (m) { s = m[1].replace(/-/g, '+').replace(/_/g, '/'); try { s = atob(s); fieldValues = JSON.parse(s); + } catch (e) { + } + + if (fieldValues) { if (!this.customLayerExists(fieldValues)) { this._customLayers.push(this.createCustomLayer(fieldValues)); } - } catch (e) { + return this.serializeCustomLayer(fieldValues); } + } }