ol.interaction.Draw:为绘制的每个要素写入唯一文本

ol.interaction.Draw: write unique text to every single feature drawn

我修改了OL 3.6.0上的"Draw features example",想让用户在通过input-form(文本)画点、多边形等的时候,添加自己的标注。

我让 jquery 收听输入表单中的实际内容和 return 这个值到 draw.interaction。

这部分有效。

但是当输入文本发生变化时,每个特征上的注释都会更改为这个新值——这不是我想要的行为。注释应保留其值。

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/

所以我想我需要处理一些功能 ID?还是抽奖事件的问题?

将您的样式设置为功能本身。使用方式:

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