だから私は昨日の午後からずっとこれに取り組んでいました。必要な結果を取得しようとしている基本的なコードのさまざまな反復を実行しました (xx ミリ秒ごとに順番にマーカーをドロップしたい) が、何も機能しません。私が得る結果は、それらが一度にすべて実行されるか、まったく実行されないかのどちらかです。「まったくない」問題は、私が修正して「一度に」取得した構文エラーが原因であると確信しています。
だからここに関数があります...
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
}
);
google.maps.event.addListener(marker, 'click', (function (marker, i)
{
return function ()
{
infowindow.setContent(location[i][0]);
infowindow.open(map, marker);
}
}
)(marker, i));
}
}
私がすべきことは、このように for 内にあると思います...
for (i = 0; i < location.length; i++)
{
setTimeout(function() {
marker = new google.maps.Marker(
{
position: new google.maps.LatLng(location[i][1], location[i][2]),
animation: google.maps.Animation.DROP,
map: map
}
);
google.maps.event.addListener(marker, 'click', (function (marker, i)
{
return function ()
{
infowindow.setContent(location[i][0]);
infowindow.open(map, marker);
}
}
)(marker, i));
}, 1000)
}
しかし、これは機能しません。また、私が試した他のことも機能しません。私は多くの説明を見てきましたが、そのほとんどは理にかなっているように見えますが、これを理解することはできず、何よりも for ループに関するものだと思います。
例として、setTimeout 内に addlistener をカプセル化することも試みました。addlistener コードを実行して、それが機能するのを待つと考えました。ループから抜け出し、呼び出された関数が何かを返すのを待つ方法を考え出す必要があると思いますが、これを行う方法がわかりません。
誰かが私が正しい軌道に乗っているかどうかを教えてくれれば、私はそれを感謝します.