1

angular6 と openlayers5 を使用しています。

シナリオは、ユーザーが検索を行い、一部のフィーチャがデータベースから取得され、OL ベクター レイヤーにレンダリングされるというものです。この時点で、地物にはデータベース (postgresql) に由来する名前が既に付けられているため、地図上にレンダリングされたときの名前になります。

その後、ユーザーはそれらのいずれかをクリックして編集できます。機能の名前を含むテキストフィールドがありますが、編集できます。

テキストフィールドの名前が編集されている間に、マップ上のフィーチャの名前を編集したいと思います。現在、テキスト フィールドで名前を編集していますが、マップ上の名前は変更されず、ユーザーを混乱させることは間違いありません。

私が今持っているもの。検索のたびに GeoJSON を取得し、レイヤーに配置します。

  const results = (new GeoJSON()).readFeatures(data.data);      
  this.myvectorsource.addFeatures(results);    

機能をクリックすると、その名前が取得され、オブジェクトに配置されます。

this.currentPoint.name = this.selectClick.getFeatures().item(0).values_.name;

次に、データベースからその機能のすべての追加の詳細を取得し、値でリセットすることにより、それらを角度のあるリアクティブ形式にする関数があります

nameField:[data.name] 

最後に、これはマップ上のフィーチャのテキストを処理するフィーチャ スタイリング関数です (元の OL の例に触発されています)。

const getText = (feature,resolution) => {
  let text="";
  if(feature.values_.name){
    text = feature.values_.name;
  }
  else{
    text = this.currentPoint.name;
  }      
  return text;
};

私は何かをやってみました

text = this.editingForm.get('editingFormNameGroup').get('nameField').value 

ただし、テキストフィールドの編集が行われているため、マップ上の名前は更新されません。

どうすればこれを修正できますか?

ありがとう

4

0 に答える 0