0

我有一个 OpenLayers.Layer.Vector 层,允许用户创建、修改和删除要素和要素属性。当他们点击“保存更改”按钮时,更改将被保存。如果用户创建了一个新特征,然后将地图缩小,这会导致 OpenLayers 从图层中删除所有特征,并且只添加保存到 GeoServer db 的特征。我曾尝试挂在新创建的特征上并将它们添加回“loadend”事件的图层,但 OpenLayers 已经破坏了新特征的几何形状,因此它们无用。缩小时如何防止 OpenLayers 破坏新功能?

4

1 回答 1

-1

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

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

}

}

于 2016-11-14T16:30:56.787 回答