Skip to content

Commit fc9d407

Browse files
committed
Merge pull request Leaflet#1858 from danzel/fix-featuregroup-removelayer
Add a few more featuregroup tests and fix regression of removeLayer.
2 parents fb3c381 + ec3b9e0 commit fc9d407

File tree

2 files changed

+47
-7
lines changed

2 files changed

+47
-7
lines changed

spec/suites/layer/FeatureGroupSpec.js

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
describe('CircleMarker', function () {
1+
describe('FeatureGroup', function () {
2+
var map;
3+
beforeEach(function () {
4+
map = L.map(document.createElement('div'));
5+
map.setView([0, 0], 1);
6+
});
27
describe("#_propagateEvent", function () {
3-
var map, marker;
8+
var marker;
49
beforeEach(function () {
5-
map = L.map(document.createElement('div'));
6-
map.setView([0, 0], 1);
710
marker = L.marker([0, 0]);
811
});
912
describe("when a Marker is added to multiple FeatureGroups ", function () {
@@ -33,4 +36,38 @@
3336
});
3437
});
3538
});
39+
describe('addLayer', function () {
40+
it('adds the layer', function () {
41+
var fg = L.featureGroup(),
42+
marker = L.marker([0, 0]);
43+
44+
expect(fg.hasLayer(marker)).to.be(false);
45+
46+
fg.addLayer(marker);
47+
48+
expect(fg.hasLayer(marker)).to.be(true);
49+
});
50+
});
51+
describe('removeLayer', function () {
52+
it('removes the layer passed to it', function () {
53+
var fg = L.featureGroup(),
54+
marker = L.marker([0, 0]);
55+
56+
fg.addLayer(marker);
57+
expect(fg.hasLayer(marker)).to.be(true);
58+
59+
fg.removeLayer(marker);
60+
expect(fg.hasLayer(marker)).to.be(false);
61+
});
62+
it('removes the layer passed to it by id', function () {
63+
var fg = L.featureGroup(),
64+
marker = L.marker([0, 0]);
65+
66+
fg.addLayer(marker);
67+
expect(fg.hasLayer(marker)).to.be(true);
68+
69+
fg.removeLayer(marker._leaflet_id);
70+
expect(fg.hasLayer(marker)).to.be(false);
71+
});
72+
});
3673
});

src/layer/FeatureGroup.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,12 @@ L.FeatureGroup = L.LayerGroup.extend({
2727
},
2828

2929
removeLayer: function (layer) {
30-
var id = layer in this._layers ? layer : this.getLayerId(layer);
31-
32-
if (!this._layers[id]) { return this; }
30+
if (!this.hasLayer(layer)) {
31+
return this;
32+
}
33+
if (layer in this._layers) {
34+
layer = this._layers[layer];
35+
}
3336

3437
layer.off(L.FeatureGroup.EVENTS, this._propagateEvent, this);
3538

0 commit comments

Comments
 (0)