web-dev-qa-db-ja.com

リーフレットレイヤーコントロールイベント?

サイドバーを表示されているレイヤーと同期させるために、ユーザーレイヤーの選択を検出したいと思います。

しかし、APIリファレンスにレイヤーコントロールイベントは表示されません。このようなユーザーレイヤーの選択がいつ発生したかをどのように知ることができますか?

別の方法として、レイヤーのロードイベントとアンロードイベントを確認しましたが、返されるものにIDが表示されません。どういうわけかそれを逃しましたか?

17
user1032402

ユーザーがレイヤーをアクティブ化/非アクティブ化したときに通知するイベントがいくつかあります。

これはあなたを助けるかもしれません:

https://leafletjs.com/reference-1.4.0.html#map-baselayerchange

例えば:

map.on('overlayadd', onOverlayAdd);

function onOverlayAdd(e){
    //do whatever
}
25
Adrian Garcia

ここで定義されている「baselayerchange」イベントがあります http://leafletjs.com/reference.html#control-layers マップオブジェクトにバインドするだけで準備完了です。

map.on('baselayerchange', function(e) {
  console.log(e);
});
24
Jabran Saeed

次のように、jQueryを使用して独自の「変更」イベントをLeafletレイヤーコントロールのラジオボタンにバインドできます。

    $("[name='leaflet-base-layers']").change( function () {
        alert('Layers selected: ' + $(this).parent().text());
    });
2

私はまだ実際にそれを使用しようとはしていませんが、このプラグインは有望に見えます: https://github.com/vogdb/Leaflet.ActiveLayers

これは非常に便利な機能なので、私のプロジェクトの1つで試してみます。

0
ChidG