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) {