为什么vectorSource.clear()导致功能重新加载?

时间:2015-09-25 17:19:17

标签: openlayers-3

我有ol.source.Vector自定义功能加载器。我需要用新的功能完全替换现有的功能。所以这是加载器中的代码:

vectorSource.clear();
vectorSource.addFeatures(features);

问题是调用.clear()会导致新功能加载和无限循环。 load->clear->load->clear...

这是正常行为吗?如何在添加之前清除功能?

1 个答案:

答案 0 :(得分:0)

我倾向于认为这是正常行为。为了避免无限循环,您应该从vectorSource.clear()外部调用loader,并让它知道vectorSource已清空。然后,您将在loader函数上更改一些参数。

由于您没有足够的代码显示,我建议如下:

var cleared = false;
vectorSource.on('clear', function(evt){
    cleared = true;
});

内部装载程序功能:

loader: function(){

    if(cleared) {
        //some logic
    }