2009-11-22 53 views
2

我的程序谷歌地图的GeoCoder要求有本质上的3个步骤: 1)对于一些坐标查询地理编码对象,并将它们存储在一个集合 2)将结果发送到我的主要模块,绘制上地图 3)在谷歌地图部件上绘制它们并发问题密谋对谷歌地图的Widget

为了处理地理编码,我创建了一个Requestor类 - 这个类有一个getResults()函数,它返回一个坐标的ArrayList到我的主模块绘制在地图上。但是,当我尝试在我的onModuleLoad()方法的范围内完成所有3个步骤时,遇到并发问题并从结果集中抽出空结果。我已经得到了一组3个按钮(请求,拉取结果和绘图)的工作,但希望在模块加载时自动触发它们。
我怀疑这与在适当的地方开展事件和处理程序有关;如果是这种情况,请提供一个具体的例子,因为我试图在EventHandlers上找到一个很好的教程。

+0

我已经解决了使用计时器和5000毫秒计划的问题......有没有更好的方法来做到这一点? – 2009-11-23 00:04:38

回答

0

我已经使用计时器和5000毫秒的时间表解决了问题。

使用单独的线程做处理

我不这样做GWT,所以我不能深入去,但毕竟它看起来像你(或它)。如果这是真的,那么你在对它们的最终结果做一些事情之前,需要(让它)线程(或多个线程)。

1

听起来Requestor类是异步调用的。在这种情况下,您可以使用EventBus(使用HandlerManager - GWT 1.6或更高版本实现)发送和订阅GWT中的事件。因此,从地理编码服务获得结果后,您可以发送包含结果的事件。预期结果的模块使用EventBus订阅此事件。

您可能想要查看gwt-presentergwt-dispatch应用程序的实现和示例。