y 在矢量图层中对特征进行排序?

时间:2021-03-06 02:57:54

标签: javascript gis openlayers openlayers-6

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 在顶部)

1 个答案:

答案 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 就是这种情况。

相关问题