我正在尝试使用 Google Maps API。
我的 HTML 代码如下:
<div id="map-1"></div>
我在页面上使用了一些 JS 来初始化 map ,与这个几乎相似:
var mapInstance = new google.maps.Map(document.getElementById('map-1'));
效果不错。
问题是,我需要在同一页面上多次添加和删除 map (当用户点击相应的链接时)。
我还没有找到任何关于如何从页面中删除 map 的信息 - 以及它在初始化时带来的所有 html 更改和事件 https://developers.google.com/maps/documentation/javascript/reference
有一些方法,如 clearInstanceListeners
,可能主要与点和叠加层相关,而不是与 map 本身相关(我想它应该删除放大/缩小、双击和其他事件) .
我尝试过类似 google.maps.event.clearInstanceListeners(mapInstance);
的方法。它不起作用 - 我的 map 没有丢失任何事件。
我要求这样做的原因是内存泄漏。我想如果我在我的页面上创建了将近 50 个 map 但没有成功销毁它们,我的页面将使用太多内存(因为如果只删除 HTML,事件仍然在内存中)并且因此,页面的整体性能将显着慢下来。
您对如何解决这个问题有什么想法吗?
我还看过一个话题Google Maps JavaScript API V3 - Unload / Deconstructor / Delete / Remove
他们推荐使用jQuery.remove()
。
我认为这不适合我,因为:
1) 我根本不在我的元素中使用 jQuery
2) remove
方法仅从 jQuery 的缓存中删除事件(由 jQuery 绑定(bind)的事件)
3) 作为 2) 的结果,html 被删除,但内存没有被清除(你好,内存泄漏)。
最佳答案
我最近遇到了同样的问题。首先,你试过了吗?它不会每次都以内存泄漏结束......在您的计算机上测试应该非常快。
无论如何,就我而言,我解决了内存泄漏问题,仅更新数据(我使用了热图覆盖)并一直保持相同的谷歌地图。我不确定这是否正是您所期待的,但希望对您有所帮助..
关于javascript - 如何从页面取消设置谷歌地图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22437233/