我有一张地图上有很多(> 100)标记。我想这样做,以便单击这些将图标更改为突出显示的版本。我创建了两个自定义图标,一个是常规图标,另一个是突出显示的图标。我已经将其与单个标记一起使用,但是找不到任何设置方法,因此可以通过单击来更改每个图标。
这是一个图标的工作代码:
var testmarker = L.marker([44.0, -73.0], {icon: unselectedIcon});
testmarker.on('click', function(e) {
testmarker.setIcon(selectedIcon);
});
但是我有很多标记,并使用for循环放置它们:
//points is a 2 dim array with lat/long pairs
for (i = 0; i <= points.length-1; i++) {
var marker = L.marker([points[i][0], points[i][1]], {icon: unselectedIcon});
}
marker.on('click', function(e) {
marker.setIcon(selectedIcon);
});
我尝试通过使用数组为每个标记赋予唯一的变量名称:
for (i = 0; i <= points.length-1; i++) {
testmarker[i] = L.marker([points[i][0], points[i][1]], {icon: unselectedIcon});
testmarker[i].on('click', function(e) {
alert(e.latlng); e.setIcon(selectedIcon);
});
}
这只是让我在警报中“未定义”。
更改testmarker[i].on
为this.map.on
只会在单击地图时发出警报(不更改图标)。
将整个行更改为:
testmarker[i].on('click', function(e) {
alert(e.latlng); testmarker[i].setIcon(selectedIcon);
});
更改最后一个(单击任何一个时),同时还给出未定义的警报。
如何设置标记,以便单击即可单独更改每个标记,但每个标记不使用数百个重复的代码块?