Support optional and custom layers in hash URL
- extend layer control to get current active layers (and more) - access layer control in hash instead of static initial list - use ',' layer separator and encode layers individually, so that comma in layer name gets encoded and is not mistaken as separator as with '-'
This commit is contained in:
parent
dbc7fce91d
commit
d83ffa3fbc
5 changed files with 101 additions and 74 deletions
60
js/control/Control.Layers.js
Normal file
60
js/control/Control.Layers.js
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
BR.ControlLayers = L.Control.Layers.extend({
|
||||
|
||||
getActiveLayers: function () {
|
||||
var result = [];
|
||||
|
||||
for (var i = 0; i < this._layers.length; i++) {
|
||||
var obj = this._layers[i];
|
||||
if (this._map.hasLayer(obj.layer)) {
|
||||
if (obj.overlay) {
|
||||
result.push(obj);
|
||||
} else {
|
||||
result.unshift(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
},
|
||||
|
||||
removeActiveLayers: function () {
|
||||
var removed = [];
|
||||
|
||||
for (var i = 0; i < this._layers.length; i++) {
|
||||
var obj = this._layers[i];
|
||||
if (this._map.hasLayer(obj.layer)) {
|
||||
this._map.removeLayer(obj.layer);
|
||||
removed.push(obj);
|
||||
}
|
||||
}
|
||||
|
||||
return removed;
|
||||
},
|
||||
|
||||
getLayer: function (name) {
|
||||
for (var i = 0; i < this._layers.length; i++) {
|
||||
if (this._layers[i] && this._layers[i].name === name) {
|
||||
return this._layers[i];
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
activateLayer: function (name) {
|
||||
var obj = this.getLayer(name);
|
||||
if (obj) {
|
||||
this._map.addLayer(obj.layer);
|
||||
}
|
||||
return obj;
|
||||
},
|
||||
|
||||
activateFirstLayer: function () {
|
||||
for (var i = 0; i < this._layers.length; i++) {
|
||||
var obj = this._layers[i];
|
||||
if (!obj.overlay) {
|
||||
this._map.addLayer(obj.layer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue