マップにマーカー レイヤーがあります。
新しいマーカーを追加するたびに、マウス クリック イベントに登録します。
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 関数は何もしません。