我正在使用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
但这不会在地图上更新名称,因为正在进行文本字段编辑。
我该如何解决?
谢谢