2013-04-30 70 views
0

我有一系列Leaflet FeatureGroups,它們由一系列GeoJSON圖層組成。特徵組在概念上是相似的,但我需要它們爲了某些控制原因而分開。我也需要能夠一次開啓和關閉它們。有沒有辦法做到這一點?Leaflet layerGroup控件

我查看了文檔,找不到在FeatureGroup打開和關閉時觸​​發的事件。也沒有記錄的方法將特徵組合併成某種超級組合。

對於那些誰想要圖片吧,這裏是工作流程:

GeoJSON的獲取變成層的單數據。這是不同的行政邊界(例如國家,縣等)。每個圖層根據其類型進入不同的FeatureGroup(例如,阿肯色州和紐約州進入州特色組,福特和林肯郡進入縣特徵組)。通過這種方式,我可以控制不同FeatureGroup的不透明度和樣式(例如,當我查看狀態的縣時,可以降低所有其他狀態的不透明度)。我還需要一種方法將所有這些關掉,然後再打開。 Leaflet提供了以FeatureGroup爲基礎在FeatureGroup上完成該功能的功能,但不能提供超級功能組。

有關如何實現此目的的任何想法?


問題的新版本:

那是什麼把一個圖層組的開和關,當火災事件?無論如何要鉤住那個?

回答

1

我最終得到了通常的LayerGroups或FeatureGroups,然後是一個包含所有組的所有圖層的FeatureGroup。因此,當您將形狀或圖層添加到FeatureGroup時,還要將其添加到您正在使用的FeatureGroup中以跟蹤所有內容。當然,如果你刪除不要忘記刪除它。 您可以將此基礎特徵組與其他組一起添加到地圖中,並且應該沒問題。

+0

謝謝。我最終使用了空白的LayerGroup和事件'overlayadd'和'overlayremove',然後從那裏手動打開和關閉所有圖層。 – Josh 2013-06-10 20:08:14

1

我不認爲Leaflet目前提供了一個事件,當一個LayerGroup打開或關閉(你正在談論的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},{})); 

我希望這有助於。

+0

這很有幫助,但因爲我已經是通過@gibbocool的建議獲得的大部分方法,所以我使用了該方法。 – Josh 2013-06-10 20:07:25