OK、これは主要な編集です。同様の単純なコードの例を示すことでそこに到達できると思いましたが、役に立ちません。
Googleマップを表示し、情報ウィンドウにマーカーを配置する機能があります。これはすべてうまくいきます。次に、マーカーのドロップを少し遅らせたいと思ったので、一度にドロップするのではなく、xx ミリ秒間一時停止してから次のマーカーをドロップしました。私はこれを機能させることができません。私の混乱の主な原因は、JavaScript で for ループが機能する方法について混乱しているように見えることです。
私は setTimeout を使用していましたが、これを機能させることができませんでした。私の混乱は setTimeout とは何の関係もないことに気付きました。私は自分のコードを書いてくれる人を探しているわけではありません。ここで何が欠けているのか理解できません。
forループでこの動作が期待されます...
何かをするために別のことをする次に別のことをする
私が見ていることから、この動作が発生しているように見えます...
何かをするために何か他のことをする(そしてコードを介したループごとにそれをする)次に別のことをする
コードは次のとおりです。
function delaydropmarkers()
{
alert("delaydropmarkers");
}
function marker(location)
{
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(37.5, -98.35);
var mapOptions =
{
zoom: 5,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('googleMap'), mapOptions);
var infowindow = new google.maps.InfoWindow(), marker, i;
for (i = 0; i < location.length; i++)
{
marker = new google.maps.Marker(
{
position: new google.maps.LatLng(location[i][1], location[i][2]),
animation: google.maps.Animation.DROP,
map: map
}
);
delaydropmarkers();
google.maps.event.addListener(marker, 'click', (function (marker, i)
{
return function ()
{
infowindow.setContent(location[i][0]);
infowindow.open(map, marker);
}
}
)(marker, i));
}
}
そこで、マーカーを作成するマーカー関数を呼び出し、delaydropmarkers 関数に移動して (現在はアラートが含まれているだけです)、リスナーを追加します。私はすべてのマーカーを一度に動かします。前もってお詫び申し上げます。これは私がすでにばかげていると感じていることですが、問題がわかりません。
どんな助けでも大歓迎です。