为什么 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
    }