Весь ваш код, который имеет дело с markers
, должен быть в вашей функции обратного вызова. Эта строка кода:
alert(markers.length); // length 0
выполняется до , когда возвращается вызов Ajax (т.е. до выполнения обратного вызова).
Это означает, что ваш код должен выглядеть примерно так:
$.get('/get_users.php',{},function(data){
if(data.status == 'error')
return false;
var users = data.users; // here users.length = 1 - this is ok;
for(var i in users)
{
//here I have every values from users - ok
var latLng = new google.maps.LatLng(users[i].lat, users[i].lng);
var mark = new google.maps.Marker({
position: latLng,
icon: markerImage
});
markers.push(mark);
alert(markers.length); // length 1
cluster = new MarkerClusterer(map, markers,
{
maxZoom: null,
gridSize: null
});
// more with cluster here
}
},'json');
Если вы устанавливаете или изменяете переменные в обратном вызове Ajax, не полагайтесь на их значения вне обратного вызова.