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);
});
我修改了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);
});