1

こんにちは、私は以下のコードを使用してマーカーを設定しています。関数を使用してマーカーのドラッグを実現し、ドラッグエンドで新しい場所の緯度経度を取得しています......

for (var key in data) {
    if ((data[key]["latitude"] != null) & (data[key]["longitude"] != null)){
       //populating the markers
       if (data.hasOwnProperty(key) ) {
            m = L.marker([data[key]["latitude"], data[key]["longitude"]], {
                    icon: compIcon,title:"Click and Hold Marker to drag",draggble:true
                }).bindPopup(data[key]["name"]).addTo(comp_markers);

            m.on('dragend', function(e) {

                console.log("name of the marker :"+data[key]["name"]);

                console.log("please show me changed lat & lon:"+this.getLatLng());

            });

        }

    }
 }

私の質問は次のとおりです。ドラッグしたマーカーの名前を取得する方法ですが、行の下に配列内の最後のマーカーの名前が表示されます..... ...

console.log("name of the marker :"+data[key]["name"]);

ユーザーがドラッグしている正確なマーカーを指すことを期待して、このキーワードを試しました....

console.log("name of the marker :"+this.data[key]["name"]);

私はプログラミングを学び始めたばかりです....そのような種類の訴訟をどのように処理するか教えてください........ありがとう

4

1 に答える 1

0

別の外部関数を使用する方が簡単 (かつ読みやすい) かもしれません。

for (var key in data) {
    if ((data[key]["latitude"] != null) & (data[key]["longitude"] != null)){
       //populating the markers
       if (data.hasOwnProperty(key) ) {
            m = L.marker([data[key]["latitude"], data[key]["longitude"]], {
                    icon: compIcon,title:"Click and Hold Marker to drag",draggble:true
                }).bindPopup(data[key]["name"]).addTo(comp_markers);

            m.on('dragend', getDragEndFunction(data, key));
        }

    }
}

function getDragEndFunction(data, key)
{
    return function(e) {
        console.log("name of the marker :"+data[key]["name"]);
        console.log("please show me changed lat & lon:"+this.getLatLng());
    }
}
于 2012-11-06T15:03:40.073 に答える