我的Google Maps API V3地图何时完成渲染后,如何/在哪里可以读取值?

时间:2010-09-12 06:51:04

标签: jquery perl google-maps google-maps-api-3

我有一个使用Perl脚本中较新的Google Maps API V3创建的Google地图。该脚本根据父页面中隐藏表单字段传递给它的值构建映射,并将映射返回到同一父页面中的iframe。

地图位于iframe中的原因是因为我在尝试将地图直接渲染到父页面上的div时发现了Firefox和IE的浏览器问题。将地图另外渲染到iframe窗口时不会发生这种情况。我的结论是,这是因为新的Google Maps API V3在解释CSS的过程中有点笨拙,并且或多或少地要求将地图呈现给具有100%宽度和高度值的块元素。通过将iframe窗口渲染到div中,我可以通过div的CSS控制我想要的大小,同时通过iframe文档为Google Maps API提供100%的宽度和高度值。

这是最初出现的,因为我真的希望地图在隐藏的div中呈现,当用户点击Map链接时,可以使用jQuery显示该地图。但是,这在Firefox或IE中都不起作用,并且映射无法在初始CSS显示属性设置为none的元素中呈现。当使用外部div包装器尝试它时,它甚至不起作用,它应该从包装器div中获取值。

所以现在我有一个解决方法,其中div最初不是隐藏的,iframe显示,地图构建完美,然后写入iframe页面的setTimeout事件然后关闭div以隐藏父页面上的地图。我知道,我知道,这很糟糕,但它确实允许地图正确渲染,然后将其隐藏起来。

所以我在这里寻找的是一种告诉地图何时完成呈现以启动jQuery事件以隐藏div而不是当前正在使用的setTimeout方法的方法(这也不是保证地图真的已经完成了渲染。这只是一个很好的定时猜测。)

我搜索了Google Maps API V3文档,并浏览了网络上的其他地方,看看是否有某种方法可以判断地图何时完成呈现但没有成功,并希望有人熟悉新的Google Maps API我可能会找到答案,至少让这个变通方法更加优雅:)

感谢任何方向,你可以指出我实现我在这里要完成的目标。

2 个答案:

答案 0 :(得分:0)

如何使用绝对定位将iframe移出屏幕,那么您无需隐藏它......

顺便说一下,我没有看到你在使用V3时遇到的任何问题,所以也许它们只是你代码中其他问题的副作用。

答案 1 :(得分:0)

据我所知,没有办法,因为浏览器没有通过JavaScript公开这个功能。

如果您只是想知道是否已加载图块图像,请收听tilesloaded事件。