我在数组中有几个标记(传单),例如

var marker1 = L.marker(...);
var marker2 = L.marker(...);
...


在数组中添加为

var markerArray = [];
markerArray.push(marker1);
markerArray.push(marker2);
...


现在,我需要使用For循环创建一个平移到我单击的标记的函数。我试过了这段代码,但是没有用。

for (var i = 0; i < markerArray.length; i++) {
    markerArray[i].on("click", function() {
        mymap.panTo(markerArray[i].getLatLng());
    })
};


有什么帮助吗?

最佳答案

您要做的是将事件处理程序附加到标记(请参见doc)。

在事件处理程序中,标记是事件的目标(e.target)。

for (var i = 0; i < markerArray.length; i++) {
    markerArray[i].on("click", function(e) {
        mymap.panTo(e.target.getLatLng());
    })
};


您可以用另一种方式来实现它,使i变量在事件处理程序中没有任何意义:

for (var i = 0; i < markerArray.length; i++) {
    markerArray[i].on("click", markerClicked);
};

function markerClicked(e) {
    mymap.panTo(e.target.getLatLng());
}

10-08 06:25