我有一些项目集合,其中一些可能具有相同的坐标 因此,它们在Google地图中显示为1个标记,因为标记是一个在另一个上面绘制的 为了解决这个问题,我试图"移动"这些标记只有几米,这样标记就不会碰撞 我想将它们移动到距离它们所在地5米处 我在另一个SO answer之后执行了以下操作:
double newLat = item.getLatitude() + (Math.random() - .005) / 15000;
double newLon = item.getLongitude() + (Math.random() - .005) / 15000;
问题是这会使物品移动一点但看起来有些被4m移动了3m,我想尽可能确保我将在4-6米(最小/最大)之间
我怎样才能改变我的公式呢?
答案 0 :(得分:1)
我认为最好的选择可能是使用SphericalUtil. computeOffset
中的Google Maps Android API Utility Library方法:
<强> computeOffset 强>
public static LatLng computeOffset(LatLng from, double distance, double heading)
返回从指定标题中的原点移动距离得到的LatLng(以北方向顺时针方向表示)。
参数:
来自 - 从中开始的LatLng。
距离 - 旅行距离。
标题 - 从北方顺时针旋转的标题。
在您的情况下,您可以将distance
设置为5米,并将heading
参数随机化为0到360度之间:
Random r = new Random();
int randomHeading = r.nextInt(360);
LatLng newLatLng = SphericalUtil.computeOffset(oldLatLng, 5, randomHeading);