首页 > 解决方案 > 传单:dragend 功能上的多个标记不起作用

问题描述

多变的:

var marker = [];
var i;

constructor(map) {
    this.map2 = L.map(map); 

    this.polygon_layer = {};
    this.default_polygon = [
        [3.1377736432253345, 101.56585693359375],
        [2.929326028392636, 101.6619873046875],
        [3.03629758922721, 101.89544677734375],
        [3.247466393872138, 101.8048095703125],
        [3.1377736432253345, 101.56585693359375]
    ];
    this.markers = {};
    this.marker ={};

}

主要流程在这里

createMarkers(){
    i=0;
    this.default_polygon.forEach(x =>
        marker[i] = this.setMarker(x)
    )        
}   

我在每个标记上设置dragend功能以显示每个标记的坐标。但最终在拖动后显示的其他标记坐标与创建的最后一个标记相同。当最后一个标记移动时,所有标记都跟随最后一个标记坐标。对不起我的英语不好。

setMarker(coord){
    this.marker = L.marker(coord,{draggable: true})
    .on('dragend', function() {
        var coord = String(this.marker.getLatLng()).split(',');
        var lat = coord[0].split('(');
        var lng = coord[1].split(')');
        this.marker.bindPopup("Moved to: " + lat[1] + ", " + lng[0] + ".");

        var newCoord = [parseFloat(lng[0]),parseFloat(lat[1])]
        console.log(newCoord)

    },this)
    .addTo(this.map2);

    i++

    return this.marker;
}

坐标的控制台日志

在此处输入图像描述

任何帮助表示感谢!想知道哪里有错...

标签: javascriptleaflet

解决方案


推荐阅读