我有一个OpenLayers.Layer.Vector图层,我允许用户创建,修改和删除功能和功能属性。点击“保存更改”按钮时会保存更改。如果用户创建了一个新功能,然后将一个方向放大,这会导致OpenLayers从图层中删除所有功能,并仅添加保存到GeoServer数据库的功能。我试着挂起新创建的功能并将它们添加回“loadend”事件的图层,但OpenLayers已经破坏了新功能的几何形状,因此它们没用。如何在缩小时阻止OpenLayers修改新功能?
答案 0 :(得分:-1)
我已使用featuresremoved事件获取所有已删除的功能,然后我验证它是否为“插入”状态。 为了防止多次缩小时的多次插入,我给了该功能一个中间状态。并在loadend上进行插入,再次将状态更改为“Insert”。 请注意,我一次只有一个编辑层。
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');
}
}