我在通过 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/