Javascript 如何从页面取消设置谷歌地图?
我正在尝试使用谷歌地图API 我的HTML代码如下所示:Javascript 如何从页面取消设置谷歌地图?,javascript,html,css,google-maps,Javascript,Html,Css,Google Maps,我正在尝试使用谷歌地图API 我的HTML代码如下所示: <div id="map-1"></div> 它工作得很好 问题是,我需要在同一页面上多次添加和删除地图(当用户单击相应链接时) 我还没有找到任何关于如何从页面中删除地图的信息,以及它在初始化时所带来的所有html更改和事件 有一些方法,如clearInstanceListeners,它们可能主要与点和覆盖相关,而不是与地图本身相关(我认为它应该删除缩放、双击和其他事件)。 我尝试过类似于google.maps.
<div id="map-1"></div>
它工作得很好
问题是,我需要在同一页面上多次添加和删除地图(当用户单击相应链接时)
我还没有找到任何关于如何从页面中删除地图的信息,以及它在初始化时所带来的所有html更改和事件
有一些方法,如clearInstanceListeners
,它们可能主要与点和覆盖相关,而不是与地图本身相关(我认为它应该删除缩放、双击和其他事件)。
我尝试过类似于google.maps.event.clearInstanceListeners(mapInstance)的东西代码>。它不起作用-我的地图没有丢失任何事件
我要求这样做的原因是内存泄漏。我假设如果我在我的页面上创建了近50个地图而没有成功地销毁它们,我的页面将使用太多内存(因为如果只删除HTML,事件仍在内存中),因此,页面的总体性能将显著降低
你对如何解决这个问题有什么想法吗
我也看到了一个话题
他们建议使用jQuery.remove()
我认为这对我来说不合适,因为:
1) 我只是不在我的项目中使用jQuery
2) remove
方法仅从jQuery的缓存中删除事件(由jQuery绑定的事件)
3) 由于2),html被删除,但内存没有被清除(hello内存泄漏)。我最近遇到了同样的问题。首先,你试过了吗?它不会每次都以内存泄漏结束。。。在你的电脑上测试应该很快
无论如何,在我的例子中,我解决了内存泄漏问题,只更新数据(我使用了热图覆盖),并一直保持相同的谷歌地图。我不确定这是否正是您所期望的,但希望它能有所帮助。所以您想从dom中删除一个映射容器,并在其中附加另一个映射的新容器吗?我没有答案,但是,您实际测试过性能会受到影响吗?我非常非常非常强烈地怀疑它是否以一种可测量的方式存在,如果我是你,我会首先测试它,而不是提前优化一个可能的非问题。@NicoO yep,我不仅要删除上一个地图的HTML,还要删除它绑定到地图的所有事件document@RonanThibaudau我还没有测试过。我在API文档中没有发现一个destroy
事件,我的大脑现在说“会有内存泄漏,伙计,你必须做点什么”。因此,在找到合适的东西之前我无法入睡。我仍然不确定是否每个浏览器都会删除已删除对象上的事件侦听器。我觉得这很有趣:
var mapInstance = new google.maps.Map(document.getElementById('map-1'));