Я использую 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
Но это не обновляет имя на карте, так как происходит редактирование текстового поля.
Как я могу это исправить?
Спасибо