mirror of
https://github.com/stylersnico/librenms.git
synced 2026-08-04 16:12:20 +02:00
Fix up some bugs that happen when removing and adding a MarkerClusterGroup from the map.
Was leaving layers in _layers which meant they'd get added again when we were re-added. Wasn't unbinding our events from almost anything. Fixes #94
This commit is contained in:
@@ -321,6 +321,8 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
this._map.off('zoomend', this._zoomEnd, this);
|
this._map.off('zoomend', this._zoomEnd, this);
|
||||||
this._map.off('moveend', this._moveEnd, this);
|
this._map.off('moveend', this._moveEnd, this);
|
||||||
|
|
||||||
|
this._unbindEvents();
|
||||||
|
|
||||||
//In case we are in a cluster animation
|
//In case we are in a cluster animation
|
||||||
this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');
|
this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');
|
||||||
|
|
||||||
@@ -329,6 +331,13 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
L.FeatureGroup.prototype.onRemove.call(this, map);
|
L.FeatureGroup.prototype.onRemove.call(this, map);
|
||||||
|
|
||||||
|
//Clean up all the layers we added to the map
|
||||||
|
for (var i in this._layers) {
|
||||||
|
if (this._layers.hasOwnProperty(i)) {
|
||||||
|
L.FeatureGroup.prototype.removeLayer.call(this, this._layers[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
@@ -485,6 +494,23 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_unbindEvents: function () {
|
||||||
|
var spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,
|
||||||
|
showCoverageOnHover = this.options.showCoverageOnHover,
|
||||||
|
zoomToBoundsOnClick = this.options.zoomToBoundsOnClick,
|
||||||
|
map = this._map;
|
||||||
|
|
||||||
|
if (spiderfyOnMaxZoom || zoomToBoundsOnClick) {
|
||||||
|
this.off('clusterclick', null, this);
|
||||||
|
}
|
||||||
|
if (showCoverageOnHover) {
|
||||||
|
this.off('clustermouseover', null, this);
|
||||||
|
this.off('clustermouseout', null, this);
|
||||||
|
map.off('zoomend', null, this);
|
||||||
|
map.off('layerremove', null, this);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
_zoomEnd: function () {
|
_zoomEnd: function () {
|
||||||
if (!this._map) { //May have been removed from the map by a zoomEnd handler
|
if (!this._map) { //May have been removed from the map by a zoomEnd handler
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user