在JavaScript中添加带有对象数组的鼠标单击事件



下面的代码在循环中运行,它只是在映射中添加HTML标记,并为每个标记附加click事件。点击事件附有所有标记,我可以看到警报,但弹出窗口仅显示最后一个标记,这意味着只有最后一个标志作为参数传递给事件。

var marker = new atlas.HtmlMarker({
position: [long, lat],
text: step,
popup: new atlas.Popup({
content: 'test',
pixelOffset: [0, -30],
closeButton: false
})
});
markers.push(marker);
map.events.add('click', marker, () => {
marker.togglePopup();
});

有人能帮助我们如何将所有标记发送到事件处理程序,以便在单击标记时显示相应的弹出窗口吗?

谢谢。

将代码更改为:

var marker = new atlas.HtmlMarker({
position: [long, lat],
text: step,
popup: new atlas.Popup({
content: "test",
pixelOffset: [0, -30],
closeButton: false,
}),
});
markers.push(marker);
function addMarkerToMap(marker) {
map.events.add("click", marker, () => {
marker.togglePopup();
});
}
markers.forEach(addMarkerToMap);

问题是,代码中的标记变量只是最后一个实例,并且在添加处理程序时没有迭代数组。

最新更新