我目前正在使用 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')));
});
}
总而言之,这段代码至少可以与一个警报完美配合...如果删除两个警报,则此代码不起作用。
谢谢你的帮助,问候