【发布时间】:2023-03-21 20:47:01
【问题描述】:
我有一个使用更新的 Google Maps API V3 从 Perl 脚本创建的 Google Map。该脚本根据从父页面中的隐藏表单字段传递给它的值构建地图,并将地图返回到同一父页面中的 iframe。
地图在 iframe 中的原因是,我在尝试将地图直接渲染到父页面上的 div 时发现了 Firefox 和 IE 的浏览器问题。当地图以其他方式渲染到 iframe 窗口中时,不会发生这种情况。我得出的结论是,这是因为新的 Google Maps API V3 在解释 CSS 继承的方式上有些古怪,并且或多或少要求将地图呈现为宽度和高度均为 100% 值的块元素。通过将 iframe 窗口渲染到 div 中,我可以通过 div 的 CSS 控制我想要的大小,同时通过 iframe 文档为 Google Maps API 提供 100% 的宽度和高度值。
这最初是因为我真的希望地图在隐藏的 div 中呈现,当用户单击地图链接时,它可以通过 jQuery 显示。但是,这在 Firefox 或 IE 中都不起作用,并且地图无法在初始 CSS 显示属性设置为 none 的元素中呈现。这甚至在尝试使用外部 div 包装器时都不起作用,它应该继承该包装器 div 的值。
所以现在我有一个解决方法,其中 div 最初没有隐藏,iframe 显示,地图构建完美,然后将 setTimeout 事件写入 iframe 页面,然后关闭 div 以隐藏父页面上的地图。我知道,我知道,这很 hack,但它确实允许地图正确渲染,然后将其隐藏起来。
所以我在这里寻找的是一种告诉地图何时完成渲染以启动 jQuery 事件以隐藏 div 的方法,而不是当前正在使用的 setTimeout 方法(这也不能保证地图真的已经完成了渲染。这充其量只是一个很好的定时猜测)。
我搜索了 Google Maps API V3 文档,并在网络上的其他地方查看了是否有某种方法可以判断地图何时完成渲染但没有成功,我希望有人熟悉新的 Google Maps API可能有我寻求的答案,至少可以让这个变通方法更优雅一点:)
感谢您为我提供的任何指导,以实现我在这里想要实现的目标。
【问题讨论】:
标签: jquery perl google-maps google-maps-api-3