我跟蹤到this question,其中有一個異步請求繪製從A點到B點的路線,名爲setDirections
。最後,我們希望端點位於中心位置,但默認情況下,地圖集中顯示大部分路線。在setDirections
之後簡單地添加setCenter(endpoint)
不會導致在端點處居中。如何在directionsDisplay結束後才能運行函數?
我推理使用setTimeout,setDirections
似乎是另一個異步函數,因爲等待一會兒之後,地圖集中在我希望的位置。
那麼如何確保我的setCenter
只在setDirections
完成後才能運行?我想過回調,但它沒有做到我想要的。
在我的代碼我下面,使用模式從Recurial和JavaScript Callback after calling function:
- 與
function wrapper (callback) {
- 方向請求包裝現有的方向上拉伸的代碼和附圖是異步的,所以成功響應塊內我叫
callback(this.marker.getPosition())
- 定義
wrapper
後,我打電話wrapper(function(latLng) { map.setCenter(latLng) })
這是一個JSFiddle。 http://jsfiddle.net/EeXQF/2/
setTimeout「解決方案」在那裏,只需要取消註釋。
是的,我應該回去重寫它。感謝您指出了這一點。整個上半場無關緊要。 – 2012-04-18 17:30:05
但它也比這更有趣。你真的沒有一個'問題'。還要說*你想要發生什麼,而發生什麼樣的動作會很有用。 – barryhunter 2012-04-18 17:32:34