OpenLayers在缩小时删除/销毁新功能
我有一个OpenLayers.Layer.Vector层,允许用户创建、修改和删除功能和功能属性。点击“保存更改”按钮时,更改将被保存。如果用户创建一个新要素,然后将地图缩小一个方向,这将导致OpenLayers从图层中删除所有要素,并仅删除保存到GeoServer db的附加要素。我曾尝试保留新创建的功能,并在“loadend”事件中将它们添加回图层,但OpenLayers破坏了新功能的几何结构,因此它们毫无用处。如何防止OpenLayers在缩小时突出新功能?我已使用featuresremoved事件获取所有已删除的功能,然后验证它是否为“插入”状态。 为了防止在多次缩小时多次插入,我给了该功能一个中间状态。并在loadend上进行了插入,将状态再次更改为“插入”。 请注意,我一次只有一个编辑层OpenLayers在缩小时删除/销毁新功能,openlayers,zooming,geoserver,removeall,missing-features,Openlayers,Zooming,Geoserver,Removeall,Missing Features,我有一个OpenLayers.Layer.Vector层,允许用户创建、修改和删除功能和功能属性。点击“保存更改”按钮时,更改将被保存。如果用户创建一个新要素,然后将地图缩小一个方向,这将导致OpenLayers从图层中删除所有要素,并仅删除保存到GeoServer db的附加要素。我曾尝试保留新创建的功能,并在“loadend”事件中将它们添加回图层,但OpenLayers破坏了新功能的几何结构,因此它们毫无用处。如何防止OpenLayers在缩小时突出新功能?我已使用featuresremo
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(),从而删除/销毁所有当前功能,并仅将保存到数据库中的功能添加回数据库。