Googleマップでルートパスをシミュレートしたいときに問題が発生します。
- JavaScriptの
closure
問題。 setTimeout
時間間隔を動的に変更する方法。
位置データのリストがあります。Lat、Lng、Timeなど、Googleマップにレンダリングするためのlacionオブジェクトにはさまざまな便利なプロパティがあります...
500ms(*間隔を動的に変更)ごとにGoogleマップマーカーを作成して、マップ上のルートパスをシミュレートしたいのですが、毎回同じ位置データを取得しました。
JavaScriptコードは次のとおりです。
function playback(data) {
data = [{ Time: 2010, Lat: 1.36046, Lng: 103.897018 }, { Time: 2011, Lat: 1.352566, Lng: 103.855768 }, { Time: 2012, Lat: 1.349477, Lng: 103.802553}];
for (i = 0; i < data.length; i++) {
setTimeout(function () { printlocation(data[i]); }, i * 500);
}
}
function printlocation(cur) {
alert(cur.Time);
}
コードを実行すると、2012年が3回出力されます。
調査の結果、JavaScriptclosure
が原因である可能性がありますが、どのように機能するのかよくわかりません。2つの問題を解決するためのパターンを見つけたいと思います。高度に感謝します。