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