我正在使用 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
但这不会更新地图上的名称,因为正在编辑文本字段。
我怎样才能解决这个问题?
谢谢