2017-05-11 3 views
1

私はリーフレットマップを持っていて、マップ(クリック)に添付されたイベントとサークルマーカー(クリック)に付随するイベントの両方があります。今ではサークルマーカーの色を変更したいのですが、マップのイベントが発生し、サークルマーカークリックのロジックに干渉してしまうという問題があります。LeafletJS:サークルマーカーをクリックしたときに地図上をクリックしないようにする

サークルマーカーをクリックしたときに地図イベントが発生しないようにするにはどうすればよいですか?

var circleMarker = L.circleMarker([point.lat, point.lng], { 
    radius: 8, 
    fillColor: "#ff0097", 
    color: "#000", 
    weight: 1, 
    opacity: 1, 
    fillOpacity: 0.8 
}).addTo(drawmap); 

circleMarker.on("click", function(e) { 
    e.originalEvent.preventDefault(); //This does not work 
    circleMarker.setStyle({ fillColor: '#1b1b1b' }); 
}); 


drawmap.on('click', function(e) { 
//something unrelated 
} 
+0

マーカーのオンクリックハンドラー内でイベント伝搬を停止しようとしましたか? 'e.stopPropagation();'? – DavidDomain

+0

@DavidDomainが試しただけで、悲しいことには機能しません – Fullhdpixel

答えて

1

リーフレットのイベントオブジェクト内で内部的にこれを処理する方法はありません。おそらく、あなたは外部のフラグを使って追跡することができます:

var isCircleEvent = false; 
circleMarker.on("click", function (e) { 
    circleMarker.setStyle({ fillColor: '#1b1b1b' }); 
    isCircleEvent = true; 
}); 


drawmap.on('click', function (e) { 
    if (isCircleEvent) { 
     //reset the flag and return; 
     isCircleEvent = false; 
     return; 
    } 
    //something unrelated 
}); 
関連する問題