なぜそれが機能しないのか理解しています。しかし、結果を取得する方法がわかりません:
グローバル配列があります:
var members=[[1,x,y,z],[2,x1,y1,z1],[3,x2,y2,z3]];
function drop() {
for (var i = 0; i < members.length-1; i++) {
setTimeout(function() {
addMarker();
}, i * 30);
}
}
function addMarker() {
var marker = new google.maps.Marker({
position: members[iterator][1],
icon: pinImage[members[iterator][2]],
shadow: shadow,
map: map,
draggable: false,
title: members[iterator][3],
animation: google.maps.Animation.DROP });
google.maps.event.addListener(marker, 'click', function() {
$.ajax({
url : 'ajax/get_infowindow_content.php?id='+members[iterator][0],
success: function(data) {
infowindow.close();
infowindow.setContent(data);
infowindow.open(map, marker);
}
});
});
markers.push(marker);
iterator++;
}
問題はここにあります:
url : 'ajax/get_infowindow_content.php?id='+members[iterator][0],
マーカーをクリックすると、関数が起動され、メンバー[iterator] [0]がチェックされますが、イテレーターはイテレーターの最後の値です(ループ全体の後)。
最良の解決策は、次のような .value() のようなものです。
url : 'ajax/get_infowindow_content.php?id='+members[iterator][0].value(),
しかし、もちろんうまくいきません。
積み重なって..