![](/img/trans.png)
[英]How to improve OpenLayer Vector layers refresh for 200 elements?
[英]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.