通过 class(向量)获取图层然后使用 Openlayer 2.14 刷新不起作用
Get layers by class (Vector) then refresh does not work using Openlayer 2.14
首先,我获取了所有矢量图层,然后评估它是否可见并获取其名称。然后我想删除该层上的所有过滤器然后刷新。
这是代码片段:
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
});
}
};
它抛出一个错误:
Uncaught TypeError: vlayer.refresh is not a function
我注意到如果我使用矢量图层的赋值变量,刷新工作。
例如:
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
});
}
};
首先,我获取了所有矢量图层,然后评估它是否可见并获取其名称。然后我想删除该层上的所有过滤器然后刷新。
这是代码片段:
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
});
}
};
它抛出一个错误:
Uncaught TypeError: vlayer.refresh is not a function
我注意到如果我使用矢量图层的赋值变量,刷新工作。
例如:
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
});
}
};