【发布时间】:2015-10-28 00:06:14
【问题描述】:
我是一个 OpenLayers 新手,我正在使用 v3.0.0。
我最近使用我在网上找到的一些代码,在我的地图中添加了一个样式函数代码来显示要素上的标签:
function labelStyle(feature, resolution) {
var text = '';
if (options.showLabels && (resolution < 80)) {
text = feature.get('name');
}
if (!styleCache[text]) {
styleCache[text] = [
new window.ol.style.Style({
stroke: new window.ol.style.Stroke({ color: [0, 153, 255, 1], width: 2.5 }),
fill: new window.ol.style.Fill({ color: [0, 255, 0, 0.1] }),
text: new window.ol.style.Text({
font: '16px Calibri,sans-serif',
text: text,
fill: new ol.style.Fill({
color: [255, 255, 255, 1]
}),
stroke: new ol.style.Stroke({
color: [0, 0, 0, 1],
width: 3
})
})
})
];
}
return styleCache[text];
}
这很好用,我可以在创建矢量图层时传递这个函数而不是样式,标签现在出现在特征的中心。但是,如果我选择一个特征,标签就会消失。
所以我的目标是能够将此样式应用于选定的功能。
我看过StyleMap 的代码,您可以在其中定义default、select 等的样式。但如果我实现这个StyleMap,我将无法从用于标记的功能。
似乎我可以拥有一个,但不能拥有另一个。
【问题讨论】:
-
为什么选择 OpenLayers 3.0.0?最新版本是 3.10.1,自 3.0 以来完成了许多功能和错误修复。
-
我个人喜欢保持最新。今天早上我正在考虑升级,据我所知,我们的代码中只有 2 个重大更改,所以如果我能说服团队,我可能会在本周晚些时候升级。
-
是的,自 3.0 以来,大多数事情都得到了改进。如果不出意外,文档会更完整。我注意到我在回答中建议的样式选项在 3.0.0 文档中没有记录。
标签: openlayers-3