完全销毁单张地图
问题描述:
我使用Leaflet.js以及出色的Leaflet Marker Clusterer插件在科尔多瓦Android应用程序中显示地图。当图是鉴于不再是我毁了它使用完全销毁单张地图
map.off();
map.remove();
基于我在这个论坛上其他线程中的建议。然而,我不清楚这是否正在完成这项工作 - 例如,我发现标记聚合器层依然存在。在每次后续的地图重绘时,是否会销毁并重新创建地图容器DOM元素,以确保地图上的所有内容都被销毁而不会发生内存泄漏?
答
如https://github.com/Leaflet/Leaflet/pull/5265所述,无论是简单地销毁DOM元素还是删除它们的引用都不会释放内存:两者都需要在所有代码中以一致的方式完成,以便能够正常工作。再加上地图和图层之间的循环引用,你就会一路上泄漏。
AFAIK,核心单张代码只会在每次销毁地图时泄漏一个(并且只是一个)参考L.Draggable
。 MarkerCluster代码很可能无法清理,内部循环引用仍然存在。
另请注意,在https://github.com/Leaflet/Leaflet/pull/5265中完成的更改是而不是 Leaflet 1.0.3发行版的一部分。
所以这不是关于如何使用Leaflet(和Leaflet.MarkerCluster)的问题,这是内部代码中发生泄漏的问题。 (和解决这一问题的建议将受到欢迎)
你是什么意思的“标记clusterer层持续”? – ghybs