From 1ac2d9ef6808310e8ca97886d85c2e2cd03eff7b Mon Sep 17 00:00:00 2001 From: danzel Date: Mon, 21 Oct 2013 11:02:10 +1300 Subject: [PATCH] Add getLayers and test it. fixes #222 --- spec/index.html | 1 + spec/suites/getLayersSpec.js | 48 ++++++++++++++++++++++++++++++++++++ src/MarkerClusterGroup.js | 9 +++++++ 3 files changed, 58 insertions(+) create mode 100644 spec/suites/getLayersSpec.js diff --git a/spec/index.html b/spec/index.html index d7cae1c202..6b00aae99b 100644 --- a/spec/index.html +++ b/spec/index.html @@ -46,6 +46,7 @@ + diff --git a/spec/suites/getLayersSpec.js b/spec/suites/getLayersSpec.js new file mode 100644 index 0000000000..1c4509635d --- /dev/null +++ b/spec/suites/getLayersSpec.js @@ -0,0 +1,48 @@ +describe('getLayers', function () { + var map, div; + beforeEach(function () { + div = document.createElement('div'); + div.style.width = '200px'; + div.style.height = '200px'; + document.body.appendChild(div); + + map = L.map(div, { maxZoom: 18 }); + + map.fitBounds(new L.LatLngBounds([ + [1, 1], + [2, 2] + ])); + }); + afterEach(function () { + document.body.removeChild(div); + }); + + it('hits polygons and markers before adding to map', function () { + var group = new L.MarkerClusterGroup(); + var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]); + var marker = new L.Marker([1.5, 1.5]); + + group.addLayers([polygon, marker]); + + var layers = group.getLayers(); + + expect(layers.length).to.be(2); + expect(layers).to.contain(marker); + expect(layers).to.contain(polygon); + }); + + it('hits polygons and markers after adding to map', function () { + var group = new L.MarkerClusterGroup(); + var polygon = new L.Polygon([[1.5, 1.5], [2.0, 1.5], [2.0, 2.0], [1.5, 2.0]]); + var marker = new L.Marker([1.5, 1.5]); + + group.addLayers([polygon, marker]); + map.addLayer(group); + + var layers = group.getLayers(); + + expect(layers.length).to.be(2); + expect(layers).to.contain(marker); + expect(layers).to.contain(polygon); + }); +}); \ No newline at end of file diff --git a/src/MarkerClusterGroup.js b/src/MarkerClusterGroup.js index 91678a7fa3..896d8556b4 100644 --- a/src/MarkerClusterGroup.js +++ b/src/MarkerClusterGroup.js @@ -308,6 +308,15 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({ this._nonPointGroup.eachLayer(method, context); }, + //Overrides LayerGroup.getLayers + getLayers: function () { + var layers = []; + this.eachLayer(function (l) { + layers.push(l); + }); + return layers; + }, + //Returns true if the given layer is in this MarkerClusterGroup hasLayer: function (layer) { if (!layer) {