2009-11-22 51 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應用程序的實現和示例。