javascript - 灰色框出现在模态框中嵌入的谷歌地图的部分中

标签 javascript google-maps google-maps-api-3 modal-dialog

我在通过 v3 API 在模态框中嵌入 Google Map 时遇到问题。

显示模式时, map Canvas 中会出现灰色框。 调整浏览器窗口的大小、调出 Web Inspector 等使所有 map 图 block 可见,即它“强制重新渲染” map 。

map 元素的父元素( section#map-modal ,见下面的代码)有 display: none在页面加载时在其 CSS 中设置。 JS模态代码自动设置display: block单击显示按钮时。如果我暂时删除 display: none从模态元素中, map 在页面刷新时正确呈现。谷歌地图不喜欢隐藏的父元素吗?

我正在使用 Twitter 的 Bootstrap 模态 jQuery 插件,并使用 CSS 控制模态本身。它是固定位置的,有像素宽度等。没什么不寻常的。

我当然已经在谷歌上搜索了解决方案,并且很多点都指向触发 resize 的 Google API 方法。事件:

google.maps.event.trigger(map, 'resize');

我确实这样做了,但没有用。

相关代码:https://gist.github.com/1591488

如您所见,我在第 39 行触发了事件。

(按侧边栏底部的查看大 map 按钮)。

文件:
  • fagerhult.js
  • fagerhult.map.js
  • bootstrap-modal.js
  • master.css

  • 我会非常感谢任何帮助或额外的一双眼睛,因为我很快就会为此发疯。

    最佳答案

    尝试使用模式事件处理程序。我认为这是确保在显示模式后调整大小而不重写任何插件的最简洁(和正确)的方法:

    $('#map-modal').on('shown', function () {
      google.maps.event.trigger(map, 'resize');
    })
    

    更新:我刚刚意识到这个解决方案仍然不能正确地居中 map ,所以我需要再添加一个命令:
    $('#map-modal').on('shown', function () {
      google.maps.event.trigger(map, 'resize');
      map.setCenter(new google.maps.LatLng(42.3605336, -72.6362989));
    })
    

    关于javascript - 灰色框出现在模态框中嵌入的谷歌地图的部分中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8812268/

    相关文章:

    javascript - 如何从 JSON 数组动态构建表?

    javascript - jQuery 插件上的 Click Function 只允许单击

    javascript - 如果我只知道它的大小和东北点,如何绘制谷歌地图矩形

    javascript - 无法删除 Google map 标记

    javascript - 将句子拆分为单词数组

    javascript - 将 ES6 生成器与 XMLHttpRequest 结合使用

    google-maps - 在运行时更改谷歌地图 v3 中的光标

    javascript - 平滑 GPS 跟踪的路线坐标

    r - 如何使用 R 找到到单对纬度/经度坐标的最近道路?

    android - 放大时聚类标记不隐藏