leaflet (2) 使用 Layer Groups
Layer groups
假設我們有一些資料想整理在一起,一次控制。
1 | let littleton = L.marker([39.61, -105.02]).bindPopup('This is Littleton, CO.'), |
可以使用 Layer Group Class
1 | let cities = L.layerGroup([littleton, denver, aurora, golden]); |
這樣我們就建立了一筆 cities 的 layer group囉。
Layers Control
在 leaflet 裡有兩種圖層:
base layers: 基本圖層,一次只能顯示一層,例如 tile layers。
overlays: 加在基本圖層上的其他圖層。
現在可以先建立兩個基本圖層,並加入 map 裡。
1 | let osm = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { |
再來建立兩個物件,一個 base layers,一個 overlays。物件裡的key是顯示在control上的名稱,value 則是對應的圖層。
1 | let baseMaps = { |
也可以直接將樣式帶入 key,如下 Grayscale 會以灰色顯示。
1 | var baseMaps = { |
最後可以來建立 layer control,第一個參數是 base layer物件,第二個參數是 overlayer 物件。兩個參數都是optional。可以只傳入baseLayer物件,省略第二個參數,或只傳入第二個參數,第一個參數設為null。
1 | var layerControl = L.control.layers(baseMaps, overlayMaps).addTo(map); |
來看看完成範例吧
最後,圖層也可以動態增減
1 | var crownHill = L.marker([39.75, -105.09]).bindPopup('This is Crown Hill Park.'), |