99 lines
2.5 KiB
JavaScript
99 lines
2.5 KiB
JavaScript
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;
|
|
},
|
|
|
|
getActiveBaseLayer: function () {
|
|
var activeLayers = this.getActiveLayers();
|
|
for (var i = 0; i < activeLayers.length; i++) {
|
|
var obj = activeLayers[i];
|
|
if (!obj.overlay) {
|
|
return obj;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
},
|
|
|
|
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++) {
|
|
var obj = this._layers[i];
|
|
if (obj.name === name) {
|
|
return obj;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
},
|
|
|
|
getBaseLayers: function () {
|
|
return this._layers.filter(function (obj) {
|
|
return !obj.overlay;
|
|
});
|
|
},
|
|
|
|
activateLayer: function (obj) {
|
|
if (!this._map.hasLayer(obj.layer)) {
|
|
this._map.addLayer(obj.layer);
|
|
}
|
|
},
|
|
|
|
activateFirstLayer: function () {
|
|
for (var i = 0; i < this._layers.length; i++) {
|
|
var obj = this._layers[i];
|
|
if (!obj.overlay) {
|
|
this.activateLayer(obj);
|
|
break;
|
|
}
|
|
}
|
|
},
|
|
|
|
activateBaseLayerIndex: function (index) {
|
|
var baseLayers = this.getBaseLayers();
|
|
var obj = baseLayers[index];
|
|
|
|
this.activateLayer(obj);
|
|
},
|
|
|
|
_addLayer: function (layer, name, overlay) {
|
|
L.Control.Layers.prototype._addLayer.call(this, layer, name, overlay);
|
|
|
|
// override z-index assignment to fix that base layers added later
|
|
// are on top of overlays; set all base layers to 0
|
|
if (this.options.autoZIndex && layer.setZIndex) {
|
|
if (!overlay) {
|
|
// undo increase in super method
|
|
this._lastZIndex--;
|
|
|
|
layer.setZIndex(0);
|
|
}
|
|
}
|
|
},
|
|
});
|