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

How to unset Google Maps from the page?

本文关键字:取消 设置 谷歌地图      更新时间:2023-09-26

我正在尝试使用谷歌地图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,这可能主要与点和覆盖有关,而不是地图本身(我想它应该删除缩放/缩小,双击和其他事件)。我试过google.maps.event.clearInstanceListeners(mapInstance);之类的东西。它不工作-我的地图没有丢失任何事件。

我问这个的原因是内存泄漏。我想,如果我在我的页面上创建了近50个地图而没有成功地销毁它们,我的页面将使用太多的内存(因为如果只删除一个HTML,事件仍然在内存中),因此,页面的整体性能将大大降低。

你对如何解决这个问题有什么想法吗?

我也看到了一个主题谷歌地图JavaScript API V3 -卸载/解构/删除/删除

他们建议使用jQuery.remove()

我认为这个案子不适合我,因为:

1)我只是不使用jQuery在我的项目

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

作为2)的结果,HTML被删除,但内存没有被清除(hello内存泄漏)。

我最近遇到了同样的问题。首先,你试过吗?它不会每次都以内存泄漏结束……在你的电脑上测试应该很快。

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