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

时间:2013-05-13 21:32:37

标签: openlayers zooming geoserver removeall missing-features

我有一个OpenLayers.Layer.Vector图层,我允许用户创建,修改和删除功能和功能属性。点击“保存更改”按钮时会保存更改。如果用户创建了一个新功能,然后将一个方向放大,这会导致OpenLayers从图层中删除所有功能,并仅添加保存到GeoServer数据库的功能。我试着挂起新创建的功能并将它们添加回“loadend”事件的图层,但OpenLayers已经破坏了新功能的几何形状,因此它们没用。如何在缩小时阻止OpenLayers修改新功能?

1 个答案:

答案 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');

}

}