2013-06-03 45 views
2

我想我的口活地震混搭在Google地图何时加载?

http://www.oe-files.de/gmaps/eqmashup.html

谷歌地图API第3版。目前我正努力寻找地图和特别是自定义控件呈现的正确时刻,所以我可以加载第一个数据馈送。自定义控件需要显示,因为代表多个提要中的一个的提要被突出显示。

我已阅读关于google.maps.event.addListenerOnce和事件“空闲”和“tilesLoaded”,但这些似乎都不起作用。

混搭,只要我来了,可以在这里找到:

http://www.oe-files.de/gmaps/eqmashup-ng.html

点击进一个选择器(右下)将装载的饲料,一旦页面加载。但我似乎无法找到正确的时刻加载页面后调用“switchFeed”。

大量的其他东西仍然缺失,但目前这是最大的问题。任何帮助表示赞赏。


更新:

目前,该序列应该初始化地图并加载第一个数据:

google.maps.event.addDomListener(window, 'load', initMashup); 
google.maps.event.addListenerOnce(map, 'tilesLoaded', function() { 
     switchFeed('usgs25'); 
    }); 

这不起作用,因为“地图”未初始化当addListerOnce被执行时。我曾尝试另一种方式是(或多或少)

google.maps.event.addDomListener(window, 'load', initMashup); 
switchFeed('usgs25'); 

这也不管用,因为switchFeed切换被添加自定义控制(通过map.controls)按钮的样式,该按钮尚未呈现。

所以我的问题是:什么时候地图完全加载,以及如何将动作附加到这个事件?

回答

0

我不知道如果我得到你的问题,对我来说听起来很琐碎,你可以同时加载你的谷歌地图和控制,一旦你的Feed加载,你可以更新你的地图,现在当用户拖动选择,根据天气,你会提出一个新的请求或将使用预加载的JSON文件,你可以选择清除旧的标记和加载新的?如果这不是你要求的,也许编辑你的问题将帮助我更好地回答你

0

没关系,我找到了一个操作顺序,以便页面加载。它不如V2 API那样流畅,但它起作用。

尽管如此,还有一些其他的(纯粹的JavaScript)纠结。我认为从V2过渡到V3并不像Google想让我们相信的那样容易...

0

没有理由在加载Feed之前等待很长时间。只需在initMashup()初始化地图,只要您致电setCenter()并初始化您的控件,地图就可以进行进一步操作。您可以在此之后立即致电switchFeed(),但在之内之内initMashup()功能。你的第二个代码示例不起作用,因为你在初始化代码执行之前调用了switchFeed()

请记住,这是异步代码;注意执行的顺序。一些放置良好的console.log()电话将澄清很多。

+0

异步性是*问题。就我所见,map.controls []。push在控件实际绘制之前返回。这样,即使我使用google.maps.addListenerOnce等待调用loadInitialFeed,对switchFeed的调用也会生成一个错误,因为document.getElementById(currentfeed).setAttribute会尝试更改当前不可用的元素样式。我已经转移了一系列的行动,现在已经找到了一个有效的方法。这远不是很好,但整个代码从来没有打算赢得选美比赛...... – user2449450