diff --git a/src/MarkerCluster.Spiderfier.js b/src/MarkerCluster.Spiderfier.js index 268bdd4a2..300ed8745 100644 --- a/src/MarkerCluster.Spiderfier.js +++ b/src/MarkerCluster.Spiderfier.js @@ -152,7 +152,9 @@ L.MarkerCluster.include(!L.DomUtil.TRANSITION ? { m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING m.setOpacity(0); + m._noHas = true; L.FeatureGroup.prototype.addLayer.call(group, m); + delete m._noHas; m._setPos(thisLayerPos); } diff --git a/src/MarkerCluster.js b/src/MarkerCluster.js index 7c493d42d..bd2a7f30a 100644 --- a/src/MarkerCluster.js +++ b/src/MarkerCluster.js @@ -132,7 +132,9 @@ L.MarkerCluster = L.Marker.extend({ this._backupLatlng = this._latlng; this.setLatLng(startPos); } + this._noHas = true; L.FeatureGroup.prototype.addLayer.call(this._group, this); + delete this._noHas; }, _recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) { @@ -211,7 +213,9 @@ L.MarkerCluster = L.Marker.extend({ nm.setOpacity(0); } + nm._noHas = true; L.FeatureGroup.prototype.addLayer.call(c._group, nm); + delete nm._noHas; } }, function (c) { @@ -268,7 +272,9 @@ L.MarkerCluster = L.Marker.extend({ for (i = c._childClusters.length - 1; i >= 0; i--) { m = c._childClusters[i]; if (!exceptBounds || !exceptBounds.contains(m._latlng)) { - L.FeatureGroup.prototype.removeLayer.call(c._group, m); + if (L.FeatureGroup.prototype.hasLayer.call(c._group, m)) { + L.FeatureGroup.prototype.removeLayer.call(c._group, m); + } m.setOpacity(1); } } diff --git a/src/MarkerClusterGroup.js b/src/MarkerClusterGroup.js index a694dd640..72a799a98 100644 --- a/src/MarkerClusterGroup.js +++ b/src/MarkerClusterGroup.js @@ -266,6 +266,10 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({ //Returns true if the given layer is in this MarkerClusterGroup hasLayer: function (layer) { + if (layer._noHas) { + return false; + } + if (this._needsClustering.length > 0) { var anArray = this._needsClustering; for (var i = anArray.length - 1; i >= 0; i--) {