我试图使用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被删除,但内存没有被清除(你好内存泄漏)。
答案 0 :(得分:1)
我最近遇到了同样的问题。首先,你试试吗?它不会每次都在内存泄漏中结束......在您的计算机上进行测试应该非常快。
无论如何,在我的情况下,我解决了内存泄漏问题,只更新了数据(我使用了热图叠加)并且一直保持相同的谷歌地图。我不确定这正是你所期待的,但希望它有所帮助......