0

その私のコード

 <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 は最後のレコードのみを表示します! 問題がループしていると思いますが、修正方法がわかりません。何か案が?

ありがとう

ニコラ

4

1 に答える 1

0

問題は、クリック関数を呼び出すと、list関数内の変数を参照することです。つまり、list変数の最後の値を参照します。問題と潜在的な解決策については、スタックの回答:ループ内の Javascript クロージャーで詳しく説明しています。

上記の情報を使用して修正を試みるか、リーフレット コロプレス チュートリアルをポイントに基づいて修正することができます。onClick現在はポリゴンに基づいていますが、ポイントと関数に移行することは大きな問題ではないはずです。

于 2013-11-05T05:20:20.963 に答える