具有选定样式的标记特征的样式函数
Style Function for Labelled Features with Selected Style
我是一个 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];
}
这很好用,我可以在创建矢量图层时传递这个函数而不是样式,标签现在出现在特征的中心。但是,如果我 select 一个特征,标签就会消失。
所以我的目标是能够将此样式应用于 selected 功能。
我看过 StyleMap
的代码,您可以在其中为 default
、select
等定义样式。但是如果我实现这个 StyleMap
,我无法从要素中获取名称以用于标记。
看来我可以有一个,但另一个不行。
ol.interaction.Select
从原始图层中删除选定的要素,并将它们添加到单独的图层/FeatureOverlay
。因此,用于图层的任何样式都不适用于从图层中选择(离开)的功能。
ol.interaction.Select
接受 style
选项,就像 ol.layer.Vector
一样,它适用于所选功能。在交互选项中包含您的样式功能,您应该可以开始了。
我是一个 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];
}
这很好用,我可以在创建矢量图层时传递这个函数而不是样式,标签现在出现在特征的中心。但是,如果我 select 一个特征,标签就会消失。
所以我的目标是能够将此样式应用于 selected 功能。
我看过 StyleMap
的代码,您可以在其中为 default
、select
等定义样式。但是如果我实现这个 StyleMap
,我无法从要素中获取名称以用于标记。
看来我可以有一个,但另一个不行。
ol.interaction.Select
从原始图层中删除选定的要素,并将它们添加到单独的图层/FeatureOverlay
。因此,用于图层的任何样式都不适用于从图层中选择(离开)的功能。
ol.interaction.Select
接受 style
选项,就像 ol.layer.Vector
一样,它适用于所选功能。在交互选项中包含您的样式功能,您应该可以开始了。