2013-10-30 88 views
0

我的代碼傳單/ JSON對象。標記的onclick只顯示最後一個記錄

<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); 

    } 

}); 

標記的onclick只顯示最後一個記錄!我認爲問題是在循環中,但我不明白如何解決它。任何想法?

感謝

尼古拉

回答

0

的問題是,當你調用點擊功能,它看起來回到了list變量,函數內部,這意味着它着眼於list變量的最後一個值。問題和潛在的解決方案在Stack答案中有詳細說明:Javascript closure inside loops

您可以嘗試使用上述信息修復它,或者您可以修改Leaflet Choropleth tutorial以基於點。它目前基於多邊形,但將它遷移到點和onClick函數應該不是一個大問題。

+0

謝謝喬希。我試着用你的建議來解決;) – user2780898

相關問題