Openlayers 3 在OpenLayers3中,我如何防止一个功能在被选中时移动到其他功能的前面?

Openlayers 3 在OpenLayers3中,我如何防止一个功能在被选中时移动到其他功能的前面?,openlayers-3,Openlayers 3,我使用的层次结构如下所示: FRONT 1 - layer with several features (e.g. point data) 2 - layer with several features (e.g. path data) 3 - layer with several features (e.g. region data) BACK 当用户基于ol.交互选择第3层中的特征时,选择默认行为是在第1层前面呈现所选特征。如何防止这种重新排序?当我选择区域时,我遇到了

我使用的层次结构如下所示:

FRONT  
1 - layer with several features (e.g. point data)  
2 - layer with several features (e.g. path data)  
3 - layer with several features (e.g. region data)  
BACK  

当用户基于
ol.交互选择第3层中的特征时,选择
默认行为是在第1层前面呈现所选特征。如何防止这种重新排序?

当我选择区域时,我遇到了一个几乎类似的问题-点和其他向量几何体隐藏在所选特征的后面。在我的用例中,带有透明填充的特殊样式就是解决方案。
如果您想要一个基于层渲染的解决方案,我建议您使用ZIndex处理它。ol.interaction.Select不提供setZIndex,但是如果您查看源代码(),您可以看到该交互将所选功能保存在非托管层中,您可以通过不同的方式(map.getLayers().getArray().forEach…或其他)访问该层,我相信您可以在该层中设置ZIndex。注:默认zIndex为0,较高的索引将渲染上下一层

以下是select交互在ol3中的工作方式。选定的功能被标记为在渲染时跳过。换句话说,在选定后重新渲染时,它将从原始层中消失

然后将其添加到另一个层,该层实际上没有使用传统的
map.addLayer
方法添加到地图,而是使用
layer.setMap
方法设置为地图。图层最终被绘制在所有其他图层之上,从而使“选定”功能位于所有其他图层之上

此体系结构决定用于提高性能。但是,只需使用
map.forEachFeatureAtPixel
方法,并在此处实现您自己的选择概念,您就可以轻松实现所需的功能,即让单击的功能保持不变并更改其样式。这将是缓慢的,但足够简单,以完成你想要的