OpenLayers在缩小时删除/销毁新功能

OpenLayers在缩小时删除/销毁新功能,openlayers,zooming,geoserver,removeall,missing-features,Openlayers,Zooming,Geoserver,Removeall,Missing Features,我有一个OpenLayers.Layer.Vector层,允许用户创建、修改和删除功能和功能属性。点击“保存更改”按钮时,更改将被保存。如果用户创建一个新要素,然后将地图缩小一个方向,这将导致OpenLayers从图层中删除所有要素,并仅删除保存到GeoServer db的附加要素。我曾尝试保留新创建的功能,并在“loadend”事件中将它们添加回图层,但OpenLayers破坏了新功能的几何结构,因此它们毫无用处。如何防止OpenLayers在缩小时突出新功能?我已使用featuresremo

我有一个OpenLayers.Layer.Vector层,允许用户创建、修改和删除功能和功能属性。点击“保存更改”按钮时,更改将被保存。如果用户创建一个新要素,然后将地图缩小一个方向,这将导致OpenLayers从图层中删除所有要素,并仅删除保存到GeoServer db的附加要素。我曾尝试保留新创建的功能,并在“loadend”事件中将它们添加回图层,但OpenLayers破坏了新功能的几何结构,因此它们毫无用处。如何防止OpenLayers在缩小时突出新功能?

我已使用featuresremoved事件获取所有已删除的功能,然后验证它是否为“插入”状态。 为了防止在多次缩小时多次插入,我给了该功能一个中间状态。并在loadend上进行了插入,将状态再次更改为“插入”。 请注意,我一次只有一个编辑层

var nuevas_features = null;
....
....
....
....
eventListeners: {

'loadstart': function(evt) {
    nuevas_features = null;

},
'featuresremoved' : function(algunfeature) {

    nuevas_features = null;
    nuevas_features = new Array();

    $(algunfeature.features).each(function(index, feature)
    {
           if(feature.state === 'Insert' )
           {    
               var feature_clonada = feature.clone();
               feature_clonada.state = "transicion";
               nuevas_features.push(feature_clonada);
           }
    });
},
'loadend': function(evt) {

    $(nuevas_features).each(function(index, feature)
    {
           feature.state = "Insert";
           editingLayer.addFeatures(feature);
    });
    console.log('end');

}

}

我目前使用的解决方法是:在“loadstart”处理程序层中,删除所有新功能,在“loadend”处理程序层中,重新添加所有新功能。重新查询db imho时,OpenLayers不应删除具有插入状态的功能。如何向OpenLayers添加功能?听起来你是在手工绘制,而不是将它们添加到地图中。新功能是由用户使用OpenLayers绘图控件绘制的,该控件会将它们添加到图层中。我不知道OpenLayers为什么要删除你的新功能,它不会立即删除这些功能。如果您查看OpenLayers.Strategy.BBOX的代码,请参阅“开箱即用”。缩小时,将使用新的BBOX重新查询该层,并调用OpenLayers.Strategy.BBOX.merge(),该函数调用this.layer.destroyFeatures(),从而删除/销毁所有当前功能,并仅将保存到数据库中的功能添加回数据库。