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

标签 javascript html css google-maps

我正在尝试使用 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/

相关文章:

html - 这些主要文件是为了让语义 ui 正常工作吗?

javascript - 在事件触发之前,div 样式不显示时删除文本装饰?

javascript - Angular JSON-RPC : processing error

javascript - 谁能告诉我是否可以在 wemos d1 mini 上刷新 javascript 代码?

javascript - 这个网站是怎么做到的? (实时调整图像颜色)

html背景图片无法正常显示

jquery - 多个元素与折叠的全宽按钮内联(Bootstrap)

javascript - viewbox SVG 属性导致图形间隔很远

javascript - 如何异步加载http ://debug. build.phonegap.com?

javascript - Firebase 网络推送通知,点击无效