2
レイヤーが重なっていて、各レイヤーにクリックイベントがあるとします。地図をクリックすると、どのレイヤーがクリックされたかを知りたいのですが、クリックイベントは最初のレイヤーの後で停止し、その基礎レイヤーには伝播しません。どうすればこれを達成できますか? https://jsfiddle.net/r0r0xLoc/リーフレットのイベントオーバーラップするレイヤーに伝播する方法
<div id="mapid" style="width: 600px; height: 400px;"></div>
<script>
var mymap = L.map('mapid').setView([51.505, -0.09], 13);
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
maxZoom: 18,
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' +
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
'Imagery © <a href="http://mapbox.com">Mapbox</a>',
id: 'mapbox.streets'
}).addTo(mymap);
L.polygon([
[51.509, -0.08],
[51.503, -0.06],
[51.51, -0.047]
]).addTo(mymap).on('click', function() {
console.log('clicked on 1st polygon')
});
L.polygon([
[51.609, -0.1],
[51.503, -0.06],
[51.51, -0.047]
]).addTo(mymap).on('click', function() {
console.log('clicked on 2nd polygon')
});
</script>
あなたは、各ポリゴンをクリックすると、あなたはそれに関連するメッセージを参照してください。
ここではサンプルのフィドルとそのコードです。重複部分をクリックすると、2番目のポリゴンのメッセージのみが表示されます。
最後に、私は同じアプローチを使用すると地図上でイベントをクリックするのを聞いた。私は 'リーフレットピップ'を試していない。代わりに、レイヤーにクリックされたポイントが含まれているかどうかを判断するためにturfjs/insideを使用しました。それでも、すべてのレイヤーにイベントを伝播させる必要があると考えるのは理にかなっていると思います。 – kaveh