如何阻止用户多次调用 google 地图 api

How to stop a user initiating multiple calls to google map api

我遇到了 google 地图的问题。

我有一个 HTML 表单,它为用户显示大量数据。该表单被拆分为一个六角手风琴布局,每个六角手风琴布局负责显示用户数据的不同方面。

其中一个手风琴保存着用户的地址和一张 google 地图,地图上有几个代表相关信息的图钉。

如果加载了表单,并且关闭了六角手风琴,则 google 地图 <div> 没有可用于计算缩放设置的垂直高度,我最终得到了一个缩放到行星的范围。 如果在加载表单时手风琴打开,则缩放效果很好(因为地图 <div> 有高度)。

这是众所周知的feature/bug。解决此问题的一种方法是在用户打开六角手风琴时加载 google 地图,或者如果在加载表单时六角手风琴已打开。

我需要实现的目标:如果用户多次打开和关闭手风琴(不刷新表单),我需要防止多次调用 google 映射到 'reload' 映射。

这是一个fiddle:https://jsfiddle.net/fdnuopzv/4/

如您所见,每次打开六角手风琴时都会加载 google 地图。我需要检测地图是否存在,以便它显示现有地图,而不是去获取新地图。

我尝试使用:

if (!google.map) {
  map_init();
}

但这并没有达到预期的效果。

有趣的是,如果将 map_init() 行从第 10 行移动到第 65 行,您可以看到零高度如何破坏 google 缩放。

这很低保真,但一种选择是检查容器中的 iframe ...

if ($('#accordianarea' + thisId).find('iframe').length===0) map_init();

https://jsfiddle.net/kinglish/cw2Lamxr/5/