/* * L.LayerGroup is a class to combine several layers so you can manipulate the group (e.g. add/remove it) as one layer. */ L.LayerGroup = L.Class.extend({ initialize: function (layers) { this._layers = {}; if (layers) { for (var i = 0, len = layers.length; i < len; i++) { this.addLayer(layers[i]); } } }, addLayer: function (layer) { var id = L.Util.stamp(layer); this._layers[id] = layer; if (this._map) { this._map.addLayer(layer); } return this; }, removeLayer: function (layer) { var id = L.Util.stamp(layer); delete this._layers[id]; if (this._map) { this._map.removeLayer(layer); } return this; }, clearLayers: function () { this._iterateLayers(this.removeLayer, this); return this; }, invoke: function (methodName) { var args = Array.prototype.slice.call(arguments, 1), i, layer; for (i in this._layers) { if (this._layers.hasOwnProperty(i)) { layer = this._layers[i]; if (layer[methodName]) { layer[methodName].apply(layer, args); } } } return this; }, onAdd: function (map) { this._map = map; this._iterateLayers(map.addLayer, map); }, onRemove: function (map) { this._iterateLayers(map.removeLayer, map); delete this._map; }, _iterateLayers: function (method, context) { for (var i in this._layers) { if (this._layers.hasOwnProperty(i)) { method.call(context, this._layers[i]); } } } });