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