我有一个项目的集合,其中一些可能有相同的坐标。
因此,它们在Google中被显示为一个标记,因为这些标记是在彼此之上绘制的。
为了解决这个问题,我试图将这些标记“移动”几米,这样标记就不会碰撞。
我想把他们搬到离他们的位置5米的地方。
我做了以下另一个所以回答:
double newLat = item.getLatitude() + (Math.random() - .005) / 15000;
double newLon = item.getLongitude() + (Math.random() - .005) / 15000; 问题是,这会移动一些项目,但似乎有些是400万,另一些是300万,如果可能的话,我希望确保我将在4-6米(最小/最大)之间。
我怎样才能改变我的公式来做到这一点?
发布于 2017-03-21 21:48:53
我认为最好的选择是使用来自SphericalUtil. computeOffset的Google API实用程序库方法
computeOffset 公共静态LatLng computeOffset(LatLng距离、双距离、双航向) 返回由于在指定的标题中从原点移动一段距离而产生的LatLng (从北以顺时针方向表示)。 参数: 从开始--从LatLng开始。 距离-旅行的距离。 航向-从北向顺时针方向的航向。
在这种情况下,您可以将distance设置为5米,并将heading参数随机设置为0到360度之间的值:
Random r = new Random();
int randomHeading = r.nextInt(360);
LatLng newLatLng = SphericalUtil.computeOffset(oldLatLng, 5, randomHeading);https://stackoverflow.com/questions/42937949
复制相似问题