我正在跟进这个问题,其中有一个异步请求来绘制从 A 点到 B 点的路线,称为setDirections
. 最后,我们希望端点位于中心,但默认情况下地图中心显示大部分路线。简单地添加setCenter(endpoint)
aftersetDirections
不会导致在端点居中。
我通过使用 setTimeout 进行推理,这setDirections
似乎是另一个异步函数,因为在稍等片刻之后,地图将按我的意愿居中。
那么我怎样才能确保我的setCenter
跑步只在setDirections
完成之后呢?我考虑过回调,但它没有做我想要的。
在我的代码中,我使用Recurial和JavaScript Callback 中的模式在调用函数后执行了以下操作:
- 用
function wrapper (callback) {
- 方向请求和绘图是异步的,所以在成功响应块内,我调用
callback(this.marker.getPosition())
- 定义后
wrapper
,我打电话wrapper(function(latLng) { map.setCenter(latLng) })
这是一个JSFiddle。http://jsfiddle.net/EeXQF/2/
setTimeout“解决方案”就在那里,只需要取消注释。