如何消除Google地图中的碰撞标记

问题描述 投票:4回答:3

我应该在地图上显示一组标记来指示附近的兴趣点。这些标记将通过点击打开公共聊天室,因此我认为用户在进入该房间之前应该看到有关每个标记的简短地址信息,而无需单击标记。但是,如果我在这个意义上改变标记图标,一些标记可能会发生碰撞,如下所示:

enter image description here

我想要做的是显示尽可能多的没有碰撞的标记,并用一个非常小的标记(如点)替换这些碰撞标记的图标(并且没有地址信息):

enter image description here

我通过执行x轴扫描算法来检测碰撞来实现这一结果,但不幸的是,如果标记在用户滚动地图后停止碰撞或者它从屏幕上存在或其他标记进入屏幕并开始与其他标记碰撞或用户滚动到一个全新的区域,...此算法应该在每个回合中反复执行。为了消除大多数碰撞标记,我使用了map-utils标记聚类,但我需要一种更加艰苦的方法来克服这个问题。我考虑实现四叉树,但我无法确定它是否是最佳方式。有什么建议?

例:

enter image description here

android google-maps collision-detection quadtree space-partitioning
3个回答
1
投票

恕我直言,最好的方法是结合缩放级别,四叉树和碰撞检测。所以,在这种情况下

这里,四叉树将用于减少要执行碰撞检测算法的项目(标记)的大小。因为您应该只关注标记,而不是单独的整个标记。

如果您通过缩放级别检测碰撞项目(不仅仅是像您一样检测可见区域/边界),您将不会遇到下面相关的问题

如果标记在用户滚动地图后停止碰撞,或者它存在于屏幕上或其他标记进入屏幕并开始与其他标记碰撞或用户滚动到一个全新的区域


0
投票

来自https://developers.google.com/maps/documentation/android-api/utility/marker-clustering的Google Maps Android Marker Clustering Utility就是这样做的。


0
投票

您可以尝试删除:mGoogleMap.setMyLocationEnabled(true);

© www.soinside.com 2019 - 2024. All rights reserved.