Cludge around our hasLayer implementation to make us work with the latest Leaflet master. Fixes #159

Our hasLayer returns true when we contains a marker. FeatureGroup/LayerGroup (which we inherit from) now check hasLayer when addLayer is called. At this stage our hasLayer will return true, stopping the marker from ending up on the map.
This commit is contained in:
danzel
2013-04-22 09:31:10 +12:00
parent 17b6f14416
commit 47c147d9a9
3 changed files with 13 additions and 1 deletions
+2
View File
@@ -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);
}
+7 -1
View File
@@ -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);
}
}
+4
View File
@@ -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--) {