2

我应该在地图上显示一组标记以指示附近的兴趣点。这些标记将通过点击打开公共聊天室,因此我认为用户在进入该房间之前应该看到有关每个标记的简短地址信息,而无需点击标记。不过,如果我更改标记图标在这个意义上,一些标志物可能会冲突,你可以看到如下:如何消除Google地图中的碰撞标记

enter image description here

我想要做的是显示尽可能多的标记没有碰撞什么,更换图标与像一个点一个非常小的标记(任何地址信息),这些碰撞的国家:

enter image description here

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

例子:

enter image description here

回答

0

谷歌地图Android的标记群集工具从 https://developers.google.com/maps/documentation/android-api/utility/marker-clustering做到这一点。

+0

我在问题中提到过它。我不希望看到标记重叠,就像这样:https://tctechcrunch2011.files.wordpress.com/2015/02/citymaps.jpg?w=687标记聚类不能做同样的事情。请参阅您发送的链接中的第一张图片。虽然有一些很好的群集,但也有重叠的标记。 –

+0

对不起,我匆匆一瞥。尽管如此,我还以为你可以修改集群代码呢? (它是github上的开源代码)... – SteelBytes

+0

实际上,最好的方法之一是将最小簇大小设置为1,然后将多元簇指定为点。 –

1

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

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

如果检测通过缩放级别碰撞项目(不是唯一可见的区域/界限像你一样),你会不会,如果一个标记停止用户滚动地图或后碰撞面下方

相关问题它存在于屏幕上或其他标记进入屏幕并开始与其他标记碰撞或用户滚动到一个全新的区域