单张/ JSONObject的。 Marker onclick仅显示最后一条记录

时间:2013-10-30 18:05:57

标签: onclick leaflet markers jsonobject

我的代码

 <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仅显示最后一条记录!我认为问题是在循环中,但我不明白如何解决它。任何的想法?

由于

尼古拉

1 个答案:

答案 0 :(得分:0)

问题是当你调用click函数时,它会回顾函数内部的list变量,这意味着它会查看list变量的最后一个值。问题和潜在的解决方案在Stack答案中详细说明:Javascript closure inside loops

您可以尝试使用上述信息进行修复,也可以将Leaflet Choropleth tutorial修改为基于点数。它目前基于多边形,但将它迁移到点和onClick函数应该不是一个大问题。