我在移动视口时尝试加载谷歌地图标记,但只加载我最后添加的标记。我认为这是一个封闭问题。这是我的代码的一部分:
public override Font Font{
get
{
return this.Font; ←This calls itself
}
答案 0 :(得分:0)
您可以在循环
中使用此命令google.maps.event.addListener(map, "idle", function() {loadMarker(map, marker)});
在循环的每次迭代中,您尝试添加到事件'空闲'一个匿名函数。在每个事务中,您都可以使用新数据重写此函数。作为上次交易的结果,您最后添加的标记正在加载。您应该创建一个标记数组,并在循环结束后传递它们。像这样:
downloadUrl('/data', function(results) {
var resultsJSON = JSON.parse(results.responseText).data;
var markers = [];
for (var i = 0; i < resultsJSON.length; i++) {
var lat = resultsJSON[i].lat;
var lng = resultsJSON[i].lng;
var latLng = new google.maps.LatLng(lat, lng);
var marker = new google.maps.Marker({
position: latLng,
map: map,
category:year,
icon: icon.style,
scale: 2
});
markers[i] = marker;
}
loadMarker(map, markers);
google.maps.event.addListener(map, "idle", function() {loadMarker(map, markers)});
});
function loadMarker(map, markers) {
for (var i = 0; i < markers.length; i++) {
if(map.getBounds().contains(markers[i].getPosition())) {
markers[i].setMap(map);
console.log("Hello world");
}
else {
markers[i].setMap(null);
}
}
}