私はこの質問をフォローアップしています。ここでは、ポイント A から B へのルートを描画する非同期リクエストがあり、 と呼ばれsetDirections
ます。最終的には、エンドポイントを中心に配置する必要がありますが、デフォルトでは、ルートの大部分がマップの中心に表示されます。setCenter(endpoint)
afterを追加するだけsetDirections
では、エンドポイントを中央に配置することにはなりません。
setDirections
少し待った後、マップが希望どおりに中央に配置されるため、別の非同期関数のように見えるsetTimeoutを使用して推論しました。
setCenter
では、実行が完了した後にのみ実行できるようにするにはどうすればよいsetDirections
でしょうか? コールバックについて考えましたが、私が望むことをしていません。
私のコードでは、 function を呼び出した後にRecurialおよびJavaScript Callbackのパターンを使用して、次のことを行いました。
- 既存のルート描画コードをラップする
function wrapper (callback) {
- ルート リクエストと描画は非同期であるため、成功した応答ブロック内で次のように呼び出します。
callback(this.marker.getPosition())
- を定義した後
wrapper
、私は呼び出しますwrapper(function(latLng) { map.setCenter(latLng) })
これが JSFiddle です。http://jsfiddle.net/EeXQF/2/
setTimeout の「解決策」はありますが、コメントを外すだけで済みます。