aboutsummaryrefslogtreecommitdiffstats
path: root/extlib/leaflet/src/layer/LayerGroup.js
diff options
context:
space:
mode:
Diffstat (limited to 'extlib/leaflet/src/layer/LayerGroup.js')
-rw-r--r--extlib/leaflet/src/layer/LayerGroup.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/extlib/leaflet/src/layer/LayerGroup.js b/extlib/leaflet/src/layer/LayerGroup.js
new file mode 100644
index 00000000..58940d40
--- /dev/null
+++ b/extlib/leaflet/src/layer/LayerGroup.js
@@ -0,0 +1,58 @@
+/*
+ * 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;
+ },
+
+ 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]);
+ }
+ }
+ }
+}); \ No newline at end of file