Google Maps API v3:是否有 setMap() 事件的回调或事件侦听器?

2024-03-04

我正在开发的网站上使用 Google Maps API v3。我的地图下方有一个下拉框,允许用户在地图上显示的不同标记组之间切换。每个标记都使用显示marker.setMap().

我的问题是地图有时需要很长时间才能显示新标记,尤其是在 IE 中。我想在地图切换标记时显示“加载”动画。但我不知道如何检测地图何时完成显示新数据(没有页面加载,因为这都是 AJAX)。是否有回调或事件侦听器setMap()事件,这样我就可以在最后一个标记完成加载时调用一个函数来停止“加载”动画?


setMap() 似乎没有回调或事件监听器,但我找到了一种方法来完成我想要的。我正在使用 jQuery 加载 Google 地图。这是我的代码。

初始化地图时,我为“idle”事件设置了一个监听器,该事件隐藏了“loading”动画。每当地图在滚动或缩放更改后完成重绘时,就会触发“idle”事件:

google.maps.event.addListener(this.map, 'idle', function() {
 $('#loading').hide();
});

在清除叠加层的函数中,我首先显示加载动画,然后使用 setMap(null) 清除每个标记。然后,我通过将经度更改为 0.000000001,稍微将地图居中。这发生在所有 setMap() 调用之后,并触发隐藏加载动画的“idle”事件。

// clear overlays from the map
function clearOverlays() {
 $('#loading').show();

 // clear the markers from the active data array
 if (activeData) {
  for (i in activeData) { activeData[i].setMap(null); }
 }
 activeData = '';

 // very slightly recenter the map to trigger the 'idle' event
 var centerlat = MYMAP.map.getCenter().lat();
 var centerlng = MYMAP.map.getCenter().lng() + .000000001;
 recenter = new google.maps.LatLng(centerlat, centerlng);
 MYMAP.map.setCenter(recenter);
}

这有点像黑客,但我希望其他人发现这很有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Maps API v3:是否有 setMap() 事件的回调或事件侦听器? 的相关文章

随机推荐

  • 在 matplotlib 中绘制时,正态分布显得过于密集

    我正在尝试估计数据的概率密度函数 就我而言 数据是形状为 8200 x 8100 的卫星图像 下面 我向您展示 PDF 的代码 函数 is outlier 是由在此发布此代码的人借用的 正如我们所看到的 图 1 中的 PDF 过于密集 我想
  • 如果我运行 mvn deploy ,它会构建新的工件还是只是将现有的工件部署到远程服务器?

    Note 这个问题最初是由拉希鲁 古纳提拉克 https stackoverflow com users 187248 lahiru gunathilake as an answer https stackoverflow com ques
  • 如何使用索引在两列之间进行查询过滤

    我需要一个可以在 mysql postgres 和其他主要数据库上运行的通用 sql 查询 我有一个名为autumn4 ip三列 id start end 均为整数 如何进行连接以便使用 BUT 不是 BETWEEN 而是 JOIN 像 伪
  • 仅在函数未被调用时调用函数/仅运行函数一次

    我有一个函数animate images在我的网站的一些页面上运行 执行特定的动画 我遇到的问题是 当用户再次导航到同一页面时 除了已经运行的实例之外 该函数还会被第二次调用 有没有办法做这样的事情 if animate images an
  • Python2 按值合并列表列表

    我有一个包含 4 个元素的列表 它看起来像 L grape green 2 100 grape purple 3 3 apple red 2 15 apple greed 3 10 apple red 4 4 banana yellow 2
  • Android Picasso库,如何添加身份验证标头?

    我尝试使用自定义身份验证器设置自定义 OkHttpClient 但是正如文档所说 响应来自远程 Web 或代理服务器的身份验证质询 我必须为每个图像发出 2 个请求 这并不理想 有没有像Retrofit那样的请求拦截器 或者我在 OkHtt
  • 如何向下舍入到最接近的 10 次方?

    我什至找不到这个的搜索关键字 请考虑这段代码 float inputValue getInputValue float resultValue if inputValue lt 0 1f resultValue 0 01f else if
  • 如何在 C# 中调用此 C 函数(解组返回结构)?

    我想使用 c 互操作从用 c 编写的 dll 中调用函数 我有头文件 看看这个 enum CTMBeginTransactionError CTM BEGIN TRX SUCCESS 0 CTM BEGIN TRX ERROR ALREAD
  • 如何使用Fiddler监控Windows服务?

    看来 Fiddler 不会监视任何与 Fiddler 本身不在同一用户下运行的内容 我想监视运行在以下环境下的 Windows 服务Local System 这可能吗 我通过参考使它起作用有没有办法配置 Fiddler 来拦截来自 Wind
  • 转置 html 表格

    是否可以转置 html 表格 无需 javascript 我正在从对象列表生成一个带有rails 和erb 的表 因此 当每一行对应一个对象时 做到这一点非常容易和自然 但是 我需要将每个对象表示为一列 我只想有一个循环并描述每一列 而不是
  • 每当事件发生时触发 Spark 作业

    我有一个 Spark 应用程序 每当收到有关某个主题的 kafka 消息时就应该运行 我每天不会收到超过 5 6 条消息 因此我不想采用 Spark Streaming 方法 相反 我尝试使用提交申请SparkLauncher但我不喜欢这种
  • NSManagedObject 无法遵守 Swift 中的协议

    我需要 NSManagedObject 和常规 NSObject 的共享接口 在 Objective c 中 我可以使用协议来实现这一点 但在 Swift 中我遇到了这个运行时错误 有什么解决办法吗 提前致谢 protocol Produc
  • 将多列转换为一大列 (Excel 2010)

    我想将 15 096 列文本 每个单元格一个单词 转换为一个大列 包括原始列中的每个单元格 我原来的列大小各不相同 即一列可能有 4 个单元格 行 而另一列可能有 100 个单元格 行 我没有使用 VBA 的经验 但已经录制了一个宏来手动执
  • 如何将netcdf4-python安装到ubuntu14.04上?

    我想将 netcdf4 python 安装到我的 Ubuntu14 04 上 libhdf5 dev 1 8 11 5ubuntu7 amd64 deb 和 libnetcdf 4 1 3 7ubuntu2 amd64 deb 已安装 我从
  • Oracle SQL Developer - 错误:“在预期位置未找到 FROM 关键字”

    抱歉我的菜鸟问题 但我正在尝试找出为什么我的 Oracle SQL 指示错误 在预期的位置未找到 FROM 关键字 如下图 我尝试运行的代码如下 select PCKCOO AS COMPANHIA DO PEDIDO NUMERO DO
  • 从小部件启动时,活动未显示在最近的应用程序列表中

    我创建了一个应用程序小部件 单击该小部件后 会在我的应用程序中启动一个活动 它发起的活动是NOT主启动器活动 如应用程序清单中设置
  • 有人有使用 berkeley db 和 PHP 的经验吗?

    我必须访问和写入其他应用程序共享的一些伯克利数据库文件 我真的没有找到任何关于在 PHP 中使用它的信息 看起来确实不太受欢迎 有谁有任何链接或资源可供我用来让事情顺利进行吗 Thanks 这不就是dba的功能吗 http php net
  • 如何同时指定div的绝对位置和相对位置

    我是新来的 我想知道如何同时将 div 的位置指定为绝对位置和相对位置 因为 div 可以同时是子级和父级 感谢您的帮助 如果孩子处于绝对位置 任何孙子可以再次绝对定位关系中给孩子 也就是说 孩子不需要position relative为孙
  • DQL 左连接 - sql 示例

    运行良好的 SQL 是 SELECT ro id role rr id role resource re id resource FROM resource re LEFT JOIN role resource rr ON rr resou
  • Google Maps API v3:是否有 setMap() 事件的回调或事件侦听器?

    我正在开发的网站上使用 Google Maps API v3 我的地图下方有一个下拉框 允许用户在地图上显示的不同标记组之间切换 每个标记都使用显示marker setMap 我的问题是地图有时需要很长时间才能显示新标记 尤其是在 IE 中