ユーザーが機能と機能属性を作成、変更、削除できるようにする OpenLayers.Layer.Vector レイヤーがあります。「変更を保存」ボタンを押すと、変更が保存されます。ユーザーが新しいフィーチャを作成し、マップを縮小すると、OpenLayers はレイヤからすべてのフィーチャを削除し、GeoServer db に保存されたフィーチャのみを追加します。新しく作成された機能にぶら下がって、「loadend」イベントでそれらをレイヤーに追加しようとしましたが、OpenLayers は新しい機能のジオメトリを破棄したため、役に立ちません。ズームアウト時に OpenLayers が新機能を無効にしないようにするにはどうすればよいですか?
質問する
977 次
1 に答える
-1
featuresremoved イベントを使用して、削除されたすべての機能を取得し、それが「挿入」状態かどうかを確認しました。複数のズームアウトで複数の挿入を防ぐために、機能を中間状態にしました。ロードエンドで挿入を行い、状態を再び「挿入」に変更しました。一度に 1 つの編集レイヤーしかないことに注意してください。
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 に答える