簡體   English   中英

OpenLayers - LayerSwitcher 更改可見性

[英]OpenLayers - LayerSwitcher change visbility

我正在開發一個基於 Angular 的應用程序,它使用 OpenLayers 在地圖上顯示給定的數據。 對於這張地圖,我使用的是 LayerSwitcher (ol-ext.control.LayerSwithcer):

const layerSwitcher = new LayerSwitcher({
        tipLabel: 'Layers',
        trash: false,
        width: 800
    });
this.map.addControl(layerSwitcher);

我還有一個 LayerGroup,我正在向其中添加矢量圖層。 所有這些層都可以通過 LayerSwitcher 一一選擇/取消選擇,也可以通過勾選整個 LayerGroup 的復選框來選擇/取消選擇。

我希望有這樣的功能,當在 LAyerSwitcher 中單擊一個矢量圖層以選擇/取消選擇(紅色圓圈標記為勾號)時,然后我想對我的地圖對象進行一些操作。 我為可見性更改事件添加了一個偵聽器:

const vectorLayer = this.myFunctionToGetTheLayer(input1, input2);
                vectorLayer.on('change:visible', function () {
                    console.log('selected')
                });
                this.layerGroup.getLayers().push(vectorLayer);

在此處輸入圖片說明

這很有效,當我單擊 LayerSwitcher 中的復選框時,日志會在控制台上消失。

但不是日志,我想要這樣的東西:

...this.map.getLayers()...

但是 this.map 在這個函數中是未定義的。

有沒有什么方法可以在監聽圖層的變化事件的同時對整個地圖進行操作?

非常感謝!

函數有它自己的上下文,所以沒有 map 屬性。 嘗試使用具有其父上下文的箭頭函數

vectorLayer.on('change:visible', () => {
   console.log('selected')
   ... this.map ... etc
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM