ол.взаимодействие.Draw: написать уникальный текст для каждого объекта, нарисованного


Я изменил "пример рисования объектов" на OL 3.6.0 и хочу, чтобы пользователь мог добавлять свои собственные аннотации, когда он рисует точки, полигоны и т. д. по вводу-форма (текст).

Я позволяю jquery прослушать фактическое содержимое в форме ввода и вернуть это значение в draw.взаимодействие.

Эта часть работает.

Но когда входной текст изменяется, аннотации на каждом отдельном объекте изменяются на это новое значение - не то поведение, которое я хочу. Аннотации должны сохранять свои ценности.
var inputvalue = 'default description';
...
draw.on('drawend', function (evt) {
  console.log('input:' + inputvalue)
  var oldname = evt.feature.get(name);
  evt.feature.set(name, inputvalue);
  var newname = evt.feature.get(name);
  inputvalue = newname;
  vector.setStyle(personalmarker(inputvalue));
return inputvalue;
});

И важная часть в функции стиля

function personalmarker(text) {
  ... 
  var higlighttext = new ol.style.Text({
    text: text,
  });

return new ol.style.Style({
  text: higlighttext,
  fill: fill,
  stroke: stroke,
  image: image

});

Демо: http://jsfiddle.net/wx7p40dc/2/

Итак, я предполагаю, что мне нужно справиться с некоторым идентификатором функции? Или проблема-это событие-ничья?

1 2

1 ответ:

Задайте свой стиль для самой функции. Используйте этот способ:

draw.on('drawend', function (evt) {
    console.log('input:' + inputvalue)
    evt.feature.setStyle(personalmarker(inputvalue));
    evt.feature.set(name, inputvalue);
});