Skip to content

Commit 71d1718

Browse files
committed
Add layerGroup#getLayers and tests. Fixes Leaflet#1460
1 parent b7701d1 commit 71d1718

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

spec/runner.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747

4848
<!-- /layer -->
4949
<script type="text/javascript" src="suites/layer/FeatureGroupSpec.js"></script>
50+
<script type="text/javascript" src="suites/layer/LayerGroupSpec.js"></script>
5051
<script type="text/javascript" src="suites/layer/TileLayerSpec.js"></script>
5152

5253
<!-- /layer/vector/ -->

spec/suites/layer/LayerGroupSpec.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
describe('LayerGroup', function () {
2+
describe("#addLayer", function () {
3+
it('adds a layer', function() {
4+
var lg = L.layerGroup(),
5+
marker = L.marker([0, 0]);
6+
7+
expect(lg.addLayer(marker)).toEqual(lg);
8+
9+
expect(lg.hasLayer(marker)).toBe(true);
10+
});
11+
});
12+
describe("#removeLayer", function () {
13+
it('removes a layer', function() {
14+
var lg = L.layerGroup(),
15+
marker = L.marker([0, 0]);
16+
17+
lg.addLayer(marker);
18+
expect(lg.removeLayer(marker)).toEqual(lg);
19+
20+
expect(lg.hasLayer(marker)).toBe(false);
21+
});
22+
});
23+
describe("#clearLayers", function () {
24+
it('removes all layers', function() {
25+
var lg = L.layerGroup(),
26+
marker = L.marker([0, 0]);
27+
28+
lg.addLayer(marker);
29+
expect(lg.clearLayers()).toEqual(lg);
30+
31+
expect(lg.hasLayer(marker)).toBe(false);
32+
});
33+
});
34+
describe("#getLayers", function () {
35+
it('gets all layers', function() {
36+
var lg = L.layerGroup(),
37+
marker = L.marker([0, 0]);
38+
39+
lg.addLayer(marker);
40+
41+
expect(lg.getLayers()).toEqual([marker]);
42+
});
43+
});
44+
describe("#eachLayer", function () {
45+
it('iterates over all layers', function() {
46+
var lg = L.layerGroup(),
47+
marker = L.marker([0, 0]),
48+
ctx = { foo: 'bar' };
49+
50+
lg.addLayer(marker);
51+
52+
lg.eachLayer(function(layer) {
53+
expect(layer).toEqual(marker);
54+
expect(this).toEqual(ctx);
55+
}, ctx);
56+
});
57+
});
58+
});

src/layer/LayerGroup.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,16 @@ L.LayerGroup = L.Class.extend({
9393
return this;
9494
},
9595

96+
getLayers: function () {
97+
var layers = [];
98+
for (var i in this._layers) {
99+
if (this._layers.hasOwnProperty(i)) {
100+
layers.push(this._layers[i]);
101+
}
102+
}
103+
return layers;
104+
},
105+
96106
setZIndex: function (zIndex) {
97107
return this.invoke('setZIndex', zIndex);
98108
}

0 commit comments

Comments
 (0)