Hey。 マップ上にマーカーレイヤーがあります。OpenLayerのマーカーイベントの異常な動作
私はマウスクリックイベントに私はそれを登録し、新しいマーカーを追加するたび:
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が開きます。
誰かが私を助けることができますか?
注:理由は、新しいマーカーが追加されて以来、DisableAllmMarkersが呼び出されたかどうかわからないため、EnableAllmMarkersは最初にイベントを削除します。実際に呼び出された場合、remove関数は何もしません。
ありがとう、私はそれをチェックします。 「別問題」で何を意味しましたか? –
ああ、実際の配列(整数で索引付けされている)を持っているなら、for(var i in array)ではなくfor(var i = 0; i
Pointy
私はあなたの提案されたコードで試しましたが、今では、マーカーをクリックすることなく何度も何度もイベントハンドラが呼び出されます。 –