私は現在、Google Maps API v3、jQuery、およびMarkerClustererを使用しています。
「長さ」の結果に奇妙な問題があることに気づきました。だから、私はあなたに私のコメントされたコードを見せます:
ファイルdata.jsonには、約1800個のオブジェクトが含まれています。
function initialize() {
$('#map_canvas').gmap({'zoom': 6, 'center': (new google.maps.LatLng(46.679594, 2.109375)), 'mapTypeId': google.maps.MapTypeId.ROADMAP, 'disableDefaultUI':true}).bind('init', function(evt, map) {
var mstime = new Date().getTime(); // to avoid caching
var markerslist = new Array(); // This array will gets points informations
$.getJSON('data.json?'+mstime, function(data) {
for (var i = 0; i < data.markers.length; i++) {
var val = data.markers[i];
var t = new Object();
t.lat = val.lat;
t.lng = val.lng;
t.name = val.label;
markerslist.push(t); // pushing point info in markerslist
}
});
alert(markerslist.length); // This first alert returns "0" !
alert(markerslist.length); // This new return the right count (about 1800). Weird!
for( var i = 0; i < markerslist.length; i++ ) { // To create markers on map
$('#map_canvas').gmap('addMarker', {
'position': new google.maps.LatLng(markerslist[i].lat, markerslist[i].lng)
}).click(function() {
$('#map_canvas').gmap('openInfoWindow', { content : 'Hello world!' }, this);
});
}
$('#map_canvas').gmap('set', 'MarkerClusterer', new MarkerClusterer(map, $(this).gmap('get', 'markers')));
});
}
要約すると、このコードは少なくとも1つのアラートで完全に機能します... 2つのアラートを削除すると、このコードは機能しません。
よろしくお願いします