检查指针是否与OpenLayers中的聚类子要素相交?

3
我有一张船只地图,当它们彼此靠近时会聚集在一起,除非您随后将指针悬停在聚集圆圈上。这种聚类是基于OpenLayers示例实现的:

https://openlayers.org/en/latest/examples/earthquake-clusters.html

聚类功能正常工作。问题在于地图还应该在你悬停在船只标记上时显示弹出信息。这对于独立的、非聚类的船只来说是有效的。然而,当船只被聚类时,我无法确定正在悬停的是哪个船只标记。
当船只标记没有被聚类时,我使用OpenLayers函数“getFeaturesAtPixel”,检查特征中是否有船只标记,并在找到船只标记时显示有关船只的弹出信息。当它们被聚类时,在暂时“扩展”的聚类内部悬停在标记上不会产生除集群本身以外的任何其他特征。
解决这个问题的一个可能的方法是手动检查悬停在聚类上时的船只特征。我试图使用Extent的“containsCoordinate”来查看船只标记几何的范围是否包含指针像素的坐标。然而,我从船只标记中得到的范围基本上是一个点值(从用于定位标记的点中),而不是整个图标实际覆盖的范围。
可能的挑战是如何手动检查特征是否覆盖像素/坐标?

1
也许可以在未聚类的图层中使用相同的数据源,将其排序至底图下方,这样你就可以同时找到聚类和单个要素了? - Mike
1
这是带有隐藏未聚类层的地震示例 https://codesandbox.io/s/damp-flower-p1gh2 - Mike
谢谢,这个很有效。如果答案在评论中,我不确定最佳实践是什么,但我已经发布了一个回答,描述了您的解决方案,并给予了认可。 - Magnueil
1个回答

1

感谢 Mike 在评论中提供的解决方案。

我添加了一个单独的 VectorLayer 用于船只,其中包含隐藏的标记,然后使用指针交互来触发弹出窗口。请注意,如果您像在 OL 示例中一样具有比圆形图标实际半径更大的聚类半径,则信息仍将显示为位于聚类图标外部的隐藏标记。

Mike友情提供了一个基于 OpenLayers 地震聚类示例的示例代码:

codesandbox.io/s/damp-flower-p1gh2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接