0

ユーザーが機能と機能属性を作成、変更、削除できるようにする OpenLayers.Layer.Vector レイヤーがあります。「変更を保存」ボタンを押すと、変更が保存されます。ユーザーが新しいフィーチャを作成し、マップを縮小すると、OpenLayers はレイヤからすべてのフィーチャを削除し、GeoServer db に保存されたフィーチャのみを追加します。新しく作成された機能にぶら下がって、「loadend」イベントでそれらをレイヤーに追加しようとしましたが、OpenLayers は新しい機能のジオメトリを破棄したため、役に立ちません。ズームアウト時に OpenLayers が新機能を無効にしないようにするにはどうすればよいですか?

4

1 に答える 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 に答える