我的代码
<div id='map'></div>
<div id="info"></div>
[...]
var markers1 = new L.MarkerClusterGroup( { showCoverageOnHover: true } );
$.ajax({
type: "GET",
url: "db.php",
success: function (result) {
var JSONobject = JSON.parse(result);
var jnCount = JSONobject.length;
for (var i = 0; i < jnCount; i++) {
var marker = new L.Marker(new L.LatLng(JSONobject[i]["lat"],JSONobject[i]["lng"]),{ icon: myIcon1 });
var id = JSONobject[i]["id"];
var list = "<dl>"
+ "<dt><b>CITTA':</b> " + JSONobject[i]["citta_"] + "</dt>";
marker.on('click', function()
{ {document.getElementById('info').innerHTML = list;} });
markers1.addLayer(marker);
}
map.addLayer(markers1);
}
});
Marker onclick仅显示最后一条记录!我认为问题是在循环中,但我不明白如何解决它。任何的想法?
由于
尼古拉
答案 0 :(得分:0)
问题是当你调用click函数时,它会回顾函数内部的list
变量,这意味着它会查看list
变量的最后一个值。问题和潜在的解决方案在Stack答案中详细说明:Javascript closure inside loops
您可以尝试使用上述信息进行修复,也可以将Leaflet Choropleth tutorial修改为基于点数。它目前基于多边形,但将它迁移到点和onClick
函数应该不是一个大问题。