サイドバーを表示されているレイヤーと同期させるために、ユーザーレイヤーの選択を検出したいと思います。
しかし、APIリファレンスにレイヤーコントロールイベントは表示されません。このようなユーザーレイヤーの選択がいつ発生したかをどのように知ることができますか?
別の方法として、レイヤーのロードイベントとアンロードイベントを確認しましたが、返されるものにIDが表示されません。どういうわけかそれを逃しましたか?
ユーザーがレイヤーをアクティブ化/非アクティブ化したときに通知するイベントがいくつかあります。
これはあなたを助けるかもしれません:
https://leafletjs.com/reference-1.4.0.html#map-baselayerchange
例えば:
map.on('overlayadd', onOverlayAdd);
function onOverlayAdd(e){
//do whatever
}
ここで定義されている「baselayerchange」イベントがあります http://leafletjs.com/reference.html#control-layers マップオブジェクトにバインドするだけで準備完了です。
map.on('baselayerchange', function(e) {
console.log(e);
});
次のように、jQueryを使用して独自の「変更」イベントをLeafletレイヤーコントロールのラジオボタンにバインドできます。
$("[name='leaflet-base-layers']").change( function () {
alert('Layers selected: ' + $(this).parent().text());
});
私はまだ実際にそれを使用しようとはしていませんが、このプラグインは有望に見えます: https://github.com/vogdb/Leaflet.ActiveLayers
これは非常に便利な機能なので、私のプロジェクトの1つで試してみます。