我的地图上有标记层。
每次添加新标记时,我都会将其注册到鼠标单击事件:
var lonlat = new OpenLayers.LonLat(lon,lat);
var marker = new OpenLayers.Marker(lonlat,icon);
marker.id = callId;
marker.events.register("mousedown", marker, function() {AddPopup(marker.id);});
callMarkers.addMarker(marker);
有时我想禁用/启用该事件。所以我使用这些功能:
function EnableAllMarkers()
{
for (var i in callMarkers.markers)
{
callMarkers.markers[i].events.remove("mousedown");
callMarkers.markers[i].events.register("mousedown", callMarkers.markers[i],
function() { AddPopup(callMarkers.markers[i].id); });
}
}
function DisableAllMarkers()
{
for (var i in callMarkers.markers)
{
callMarkers.markers[i].events.remove("mousedown");
}
}
当我使用此代码时,我会出现奇怪的行为 - 有时会为错误的标记打开一个弹出窗口。
我单击标记 X 并弹出 Y 打开。
有人能帮助我吗?
注意:首先删除事件
的原因EnableAllmMarkers
是因为我们不知道DisableAllmMarkers
自从添加了新标记后是否曾调用过该事件。如果确实调用了它,那么 remove 函数将什么也不做。