如何从页面中取消设置Google地图?

时间:2014-03-16 13:06:49

标签: javascript html css google-maps

我试图使用Google Maps API。

我的HTML代码如下:

<div id="map-1"></div>

我在页面上使用了一些JS来初始化地图,几乎与此类似:

var mapInstance = new google.maps.Map(document.getElementById('map-1'));

效果很好。

问题是,我需要多次在同一页面上添加和删除地图(当用户点击相应的链接时)。

我还没有找到任何关于如何从页面中删除地图的内容 - 包含所有html更改及其在初始化时带来的事件https://developers.google.com/maps/documentation/javascript/reference

有一些像clearInstanceListeners这样的方法,它们可能主要与点和叠加相关,而不是与地图本身有关(我想它应该删除一个zoomin / out,doubleclick和其他事件)。 我试过google.maps.event.clearInstanceListeners(mapInstance);之类的东西。它没有用 - 我的地图并没有松动任何事件。

我之所以要求这样做是因为内存泄漏。我想如果我在我的页面上创建了近50张地图而没有成功销毁它们,我的页面将使用太多内存(因为如果只删除了HTML,事件仍在内存中),因此,页面的整体性能将大幅提升慢下来。

您对如何解决此问题有任何想法吗?


我还看过一个话题Google Maps JavaScript API V3 - Unload / Deconstructor / Delete / Remove

他们建议使用jQuery.remove()

我认为这对我来说是个合适的案例,因为:

1)我根本不在项目中使用jQuery

2)remove方法仅从jQuery的缓存中删除事件(由jQuery绑定的事件)

3)作为2)的结果,html被删除,但内存没有被清除(你好内存泄漏)。

1 个答案:

答案 0 :(得分:1)

我最近遇到了同样的问题。首先,你试试吗?它不会每次都在内存泄漏中结束......在您的计算机上进行测试应该非常快。

无论如何,在我的情况下,我解决了内存泄漏问题,只更新了数据(我使用了热图叠加)并且一直保持相同的谷歌地图。我不确定这正是你所期待的,但希望它有所帮助......