为什么 vectorSource.clear() 会导致功能重新加载?
Why vectorSource.clear() causes feature reload?
我有 ol.source.Vector
自定义功能加载器。我需要用新功能完全替换现有功能。所以这是加载程序中的代码:
vectorSource.clear();
vectorSource.addFeatures(features);
问题是调用 .clear()
会导致新功能加载和无限循环。 load->clear->load->clear...
这是正常现象吗?如何在添加之前清除功能?
我倾向于认为这是正常行为。为避免无限循环,您应该从 loader
外部调用 vectorSource.clear()
并让它知道 vectorSource
已清空。然后,您将更改 loader
函数的一些参数。
由于您显示的代码不够多,我会建议如下:
var cleared = false;
vectorSource.on('clear', function(evt){
cleared = true;
});
加载器函数内部:
loader: function(){
if(cleared) {
//some logic
}
我有 ol.source.Vector
自定义功能加载器。我需要用新功能完全替换现有功能。所以这是加载程序中的代码:
vectorSource.clear();
vectorSource.addFeatures(features);
问题是调用 .clear()
会导致新功能加载和无限循环。 load->clear->load->clear...
这是正常现象吗?如何在添加之前清除功能?
我倾向于认为这是正常行为。为避免无限循环,您应该从 loader
外部调用 vectorSource.clear()
并让它知道 vectorSource
已清空。然后,您将更改 loader
函数的一些参数。
由于您显示的代码不够多,我会建议如下:
var cleared = false;
vectorSource.on('clear', function(evt){
cleared = true;
});
加载器函数内部:
loader: function(){
if(cleared) {
//some logic
}