0

一連の GeoJSON レイヤーで構成される一連の Leaflet FeatureGroup があります。FeatureGroups は概念的には似ていますが、特定の制御上の理由からそれらを分離する必要があります。また、それらすべてを一度にオン/オフできるようにする必要もあります。これを行う方法はありますか?

ドキュメントを調べたところ、FeatureGroup のオンとオフが切り替えられたときに発生するイベントが見つかりませんでした。また、FeatureGroups をある種のスーパーグループにまとめるための文書化された方法もありません。

それをイメージしたい人のために、ワークフローは次のとおりです。

GeoJSON は Leaflet のレイヤーに変換されたデータを取得します。これは異なる管理境界 (州、郡など) のものです。各レイヤーは、そのタイプに基づいて異なる FeatureGroup に入ります (たとえば、Arkansas と New York は State FeatureGroup に入り、Ford と Lincoln 郡は County FeatureGroup に入ります)。このようにして、さまざまな FeatureGroup の不透明度とスタイルを制御できます (たとえば、州の郡を見ているときに、他のすべての州の不透明度を下げることができます)。また、これをすべてオフにしてから再びオンにする方法も必要です。リーフレットは、FeatureGroup ごとにそれを行う機能を提供しますが、そのスーパー セットではありません。

これを達成する方法についてのアイデアはありますか?


質問の新しいバージョン:

LayerGroup のオンとオフを切り替えるときに発生するイベントは何ですか? それにフックする方法はありますか?

4

2 に答える 2

1

最終的に、通常の LayerGroups または FeatureGroups を作成し、次にすべてのグループのすべてのレイヤーを含む FeatureGroup を作成しました。したがって、形状またはレイヤーを FeatureGroup に追加するときは、すべてを追跡するために使用している FeatureGroup にも追加してください。もちろん、削除する場合は忘れずに削除してください。このベース FeatureGroup を他のグループと一緒にマップに追加することができます。これで問題ありません。

于 2013-05-16T07:06:03.600 に答える
1

LayerGroup がオンまたはオフになったときに Leaflet が現在イベントを提供しているとは思いません (L.Control について話しているのでしょうか?)。役に立つことに同意します。今のところ、コードを拡張して、必要なことを何でも実行できます。例えば:

var customLayerControl = L.Control.Layer.extend({
  _onInputClick: function(Layer, name){ 
      // This is just like calling super() if this confuses you!
      L.Control.Layers.prototype._onInputClick.call(this,Layer,name);
      // Do stuff
    }
});

次に、L.Control.Layers を使用する代わりに、カスタム レイヤー コントロールを使用します。

map.addControl(new customLayerControl({}, {'Custom Layer':customLayer},{}));

これが役立つことを願っています。

于 2013-06-03T20:48:18.803 に答える