y 矢量图层中特征的排序?

yOrdering of features in a vector layer?

Openlayers 6.5.0 (https://openlayers.org/en/latest/apidoc/module-ol_layer_Vector-VectorLayer.html) 的文档提到了矢量层的以下内容属性:

Name Type Description
renderOrder module:ol/render~OrderFunction Render order. Function to be used when sorting features before rendering. By default features are drawn in the order that they are created. Use null to avoid the sort, but get an undefined draw order.

很不清楚,据我检查,文档和论坛中都没有示例。该代码似乎表明 sort() 函数适用于这些功能。所以,我尝试了以下方法:

...
renderOrder: function(a, b){
  return {b.getGeometry().getLastCoordinate() - a.getGeometry().getLastCoordinate()};
},
...

我已经尝试了 First/Last 和 a/b 的所有 4 种组合,但没有任何改变。有谁知道我们如何在矢量图层中对特征的渲染进行排序,以便它们按 y 顺序排列? (最低的 y/lat 在上面)

感谢上面评论中的@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 上就是这样。