我修改了OL 3.6.0上的“绘制特征示例”,并希望让用户在通过输入形式(文本)绘制点,多边形等时添加自己的注释。
我让jquery听取输入表单中的实际内容,并将此值返回到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
});
DEMO:http://jsfiddle.net/wx7p40dc/2/
所以我想我需要处理一些功能ID?或者是drawend事件的问题?
答案 0 :(得分:2)
将您的样式设置为要素本身。使用这种方式:
draw.on('drawend', function (evt) {
console.log('input:' + inputvalue)
evt.feature.setStyle(personalmarker(inputvalue));
evt.feature.set(name, inputvalue);
});