diff --git a/package.json b/package.json index d24dbf7..ecc6ee1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "geo.okapi", - "version": "1.0.1", + "version": "1.0.2", "scripts": { "test": "karma start test/conf/karma.conf.js", "eslint": "eslint src/js/** --fix", diff --git a/src/js/Control/PermaLink.js b/src/js/Control/PermaLink.js index a7b1fe3..fdb71b9 100644 --- a/src/js/Control/PermaLink.js +++ b/src/js/Control/PermaLink.js @@ -126,7 +126,7 @@ BKGWebMap.Control.createPermaLink = function () { var hashParts = layersInHash.split('&'); var hashPartsTemp; var visible; - for (var i = 1; i < hashParts.length; i++) { + for (var i = hashParts.length - 1; i >= 0; i--) { hashPartsTemp = hashParts[i].split('='); for (var k = layers.overlays.length - 1; k >= 0; k--) { if (layers.overlays[k] && layers.overlays[k].getProperties().id && layers.overlays[k].getProperties().id === hashPartsTemp[0]) { diff --git a/test/spec/Controls/permaLinkSpec.js b/test/spec/Controls/permaLinkSpec.js index 66e0c84..b21d36d 100644 --- a/test/spec/Controls/permaLinkSpec.js +++ b/test/spec/Controls/permaLinkSpec.js @@ -133,6 +133,7 @@ describe('A suite for permalink', function () { done(); }); }); + it('test load url', function (done) { window.location.hash = 'lat=' + latURL + '&lon=' + lonURL + '&zoom=' + zoom; @@ -199,4 +200,67 @@ describe('A suite for permalink', function () { done(); }); }); + + it('test layer order', function (done) { + window.location.hash = 'lat=' + latURL + '&lon=' + lonURL + '&zoom=' + zoom + '&base1=false&base2=true&o1=true&o2=true&o3=false&o3.1=true&o3.2=true&o3.3=false'; + + options = { + active: true, + print: { + active: false + }, + permaLink: { + active: true + }, + jsonExport: { + active: false + } + }; + + layers = { + baseLayers: [ + { type: 'NONE', id: 'base1' }, + { type: 'NONE', id: 'base2' } + ], + overlays: [ + { type: 'NONE', id: 'o1' }, + { type: 'NONE', id: 'o2' }, + { + type: 'GROUP', + name: 'GROUP Layer', + id: 'o3', + layers: [ + { type: 'NONE', id: 'o3.1' }, + { type: 'NONE', id: 'o3.2' }, + { type: 'NONE', id: 'o3.3' } + ] + } + ] + }; + + createMap('share', options, layers, function (map) { + var mapProjection = map.getView().getProjection().getCode(); + var mapCenter = ol.proj.transform(map.getView().getCenter(), mapProjection, 'EPSG:4326'); + var lonMap = mapCenter[0].toFixed(4); + var latMap = mapCenter[1].toFixed(4); + + expect(lonMap).toBe(lonURL); + expect(latMap).toBe(latURL); + // Zoom + expect(map.getView().getZoom()).toBe(zoom); + + // check layer order + var layerString = ''; + map.getLayers().forEach(function (layer) { + layerString = layerString + layer.getProperties().id; + if (layer instanceof ol.layer.Group) { + layer.getLayers().forEach(function (subLayer) { + layerString = layerString + subLayer.getProperties().id; + }); + } + }); + expect(layerString).toBe('base1base2o1o2o3o3.1o3.2o3.3'); // drawing order is reverse for base and overlay! + done(); + }); + }); });