将我的代码从ol.layer.Image
和ol.source.ImageVector
升级到ol.layer.Vector
并renderMode: 'image'
,upgrade notes中所述,我注意到有关选择的行为有改变:
在升级之前,选择显示在所有其他图层的顶部。所选功能的所有表示都保留在原位。现在,选择似乎取代了所有其他表示。
我创造了一个小提琴来说明问题:https://jsfiddle.net/4ke2ad0j/47/
我们有两层:
layerOutline
:显示要素轮廓的法线矢量图层,用于选择互动layerText
:描述图层,显示功能属性中的标签属性 layerText
以两种不同的方式创建:一种使用新renderMode: 'image'
,另一种使用ImageVector
。使用新模式的模式在选择时消失:
有没有人知道如何在不使用已弃用的ImageVector
的情况下取回旧行为?
更改选择StyleFunction
不是一个选项,因为我需要一种风格来进行大量不同的功能表示。
提前致谢!
答案 0 :(得分:0)
ImageVector图层是绘制为图像的图层,不会在选择时刷新。因此,您可以在选择下看到所选的特征。
选择时会重新绘制矢量图层,所选的特征不会因此您只能看到所选样式的选区。
所以选择的StyleFunction是你唯一的选择。
如果您需要大量的表示,可以在选择的StyleFunction中调用默认样式函数并在其上面添加一个新样式:
// style used for selection (should be an overlay to be the most flexible)
function styleSelect(feature, resolution) {
// Call the default style
var style = [ styleText(feature, resolution) ];
// Add red outline
var outline = new ol.style.Style({
stroke: new ol.style.Stroke({
width: 2,
color: '#f00'
})
});
style.push(outline);
return style;
}