簡體   English   中英

按類獲取圖層(矢量),然后使用Openlayer 2.14刷新不起作用

[英]Get layers by class (Vector) then refresh does not work using Openlayer 2.14

首先,獲取所有Vector圖層,然后評估其是否可見並獲取其名稱。 然后,我要刪除該層上的所有過濾器,然后刷新。

這是代碼片段:

var mLayers = map.getLayersByClass("OpenLayers.Layer.Vector");
for(var a = 0; a < mLayers.length; a++ ){
    if(mLayers[a].getVisibility()){     
        var layerName = mLayers[a].name;
        var vlayer = map.getLayersByName(layerName);
        //console.log(vlayer);
        vlayer.filter = null;
        vlayer.refresh({
            force: true
        });         
    }
};

它拋出一個錯誤:

未捕獲的TypeError:vlayer.refresh不是函數

我注意到,如果使用向量層的分配變量,刷新將起作用。

例如:

var vector_bldg =new OpenLayers.Layer.Vector("Buildings", {
...
}

然后

vector_bldg .filter = null;
vector_bldg .refresh({
    force: true
});

在檢查控制台后,該圖層不具有刷新功能的原因是它無法訪問該變量。 要解決此問題,請使用:

var mLayers = map.getLayersByClass("OpenLayers.Layer.Vector");
for(var a = 0; a < mLayers.length; a++ ){
    if(mLayers[a].getVisibility()){     
        var layerName = mLayers[a].name;
        var vlayer = map.getLayersByName(layerName);
        //console.log(vlayer);
        vlayer.filter = null;
        vlayer.refresh({
            force: true
        });         
    }
};

只需將變量更改為此: 在此處輸入圖片說明

var mLayers = map.getLayersByClass("OpenLayers.Layer.Vector");
    for(var a = 0; a < mLayers.length; a++ ){
        if(mLayers[a].getVisibility()){     
            var layerName = mLayers[a].name;
            var vlayer = map.getLayersByName(layerName);
            //console.log(vlayer);
            vlayer[0].filter = null;
            vlayer[0].refresh({
                force: true
            });         
        }
    };

暫無
暫無

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

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