Openlayers 6.5.0 (https://openlayers.org/en/latest/apidoc/module-ol_layer_Vector-VectorLayer.html) 的文档提到了矢量层的以下属性:
姓名 | 类型 | 说明 |
---|---|---|
渲染顺序 | module:ol/render~OrderFunction | 渲染顺序。在渲染之前对特征进行排序时要使用的函数。默认情况下,要素按创建顺序绘制。使用 null 避免排序,但获得未定义的绘制顺序。 |
这很不清楚,据我检查,文档和论坛中都没有示例。代码似乎表明 sort() 函数适用于这些功能。所以,我尝试了以下方法:
...
renderOrder: function(a, b){
return {b.getGeometry().getLastCoordinate() - a.getGeometry().getLastCoordinate()};
},
...
我已经尝试了 First/Last 和 a/b 的所有 4 种组合,但没有任何改变。有谁知道我们如何在矢量图层中对特征的渲染进行排序,以便它们按 y 顺序排列? (最低 y/lat 在顶部)
答案 0 :(得分:0)
感谢@Mike 在上面的评论中(并且知道我可以使用 getCoordinates() 而不是 getLastCoordinate()),我已经解决了这个问题。由于以下原因,我已经成功地将 yordering 应用于我的功能:
...
renderOrder: function(a, b){
return {b.getGeometry().getCoordinates()[1] - a.getGeometry().getCoordinate()[1]};
},
...
在下面@Mike 的评论之后进行编辑:该特定层由点特征组成,因此 getCoordinates()[1] 工作得很好。对于多种几何类型,使用 getFirstCoordinate()[1] 或 getLastCoordinate()[1] 会更安全。
在地图上看起来好多了。我是唯一一个认为它应该是默认行为的人吗? Mapbox GL JS 就是这种情况。