Jac*_*ian 2 javascript openlayers-3
我在 stackoverflow 上阅读了几十个线程,但没有一个有帮助。所以,这就是我尝试做的:
features.forEach(function(feature){
source.removeFeature(feature);
console.log("removed");
console.log(feature);
});
Run Code Online (Sandbox Code Playgroud)
结果,当我只选择了一项功能时,我会在控制台中看到以下消息:
removed Controller.js:525:8
Object { disposed_: false, onDisposeCallbacks_: undefined, ...}
Run Code Online (Sandbox Code Playgroud)
就我在控制台中看到的而言,一切看起来都不错。但问题是该特征并未从地图中移除。
编辑
现在更有趣了。如果我使用 getArray 将特征转换为数组并执行以下操作:
for(var i=0,len=features.length;i<len;i++){
var feature = features[i];
source.removeFeature(feature);
}
source.clear();
Run Code Online (Sandbox Code Playgroud)
当我有很多功能并且只选择了一个功能时,那么在这种情况下,只有这个选定的功能会保留下来,而所有其余的功能都会被删除。到底他妈发生了什么??
小智 5
我有这个问题很长一段时间,我无法弄清楚。事实证明,这似乎是 OpenLayers 中的刷新问题。我发现让图层刷新的方法是使其不可见,然后再次可见。
这是我用来解决问题的代码(在 AngularJS 中):
vectorLayer.getSource().removeFeature(feature);
$timeout(function() {
vectorLayer.setVisible(false);
vectorLayer.setVisible(true);
}, 10);
Run Code Online (Sandbox Code Playgroud)
如果您不使用 Angular,只需使用以下内容:
vectorLayer.getSource().removeFeature(feature);
vectorLayer.setVisible(false);
vectorLayer.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4805 次 |
| 最近记录: |