Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从页面取消设置谷歌地图?_Javascript_Html_Css_Google Maps - Fatal编程技术网

Javascript 如何从页面取消设置谷歌地图?

Javascript 如何从页面取消设置谷歌地图?,javascript,html,css,google-maps,Javascript,Html,Css,Google Maps,我正在尝试使用谷歌地图API 我的HTML代码如下所示: <div id="map-1"></div> 它工作得很好 问题是,我需要在同一页面上多次添加和删除地图(当用户单击相应链接时) 我还没有找到任何关于如何从页面中删除地图的信息,以及它在初始化时所带来的所有html更改和事件 有一些方法,如clearInstanceListeners,它们可能主要与点和覆盖相关,而不是与地图本身相关(我认为它应该删除缩放、双击和其他事件)。 我尝试过类似于google.maps.

我正在尝试使用谷歌地图API

我的HTML代码如下所示:

<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'));