2012-05-10 95 views
1

我想在围绕我的位置的圆圈内生成随机的纬度/经度对。在我的位置附近生成随机位置

目前我已经实现了一个位置监听器,每当我得到一个新的位置,我想绘制我附近的随机位置。

我能够计算2点现有的位置之间的距离,并知道它在我的范围:

public List<Location> filter(Location current, List<Location> locations, int radius) { 
    List<Location> results = new ArrayList<Location>(); 
    for (Location loc : locations) { 
     if (current.distanceTo(loc) <= radius) { 
      results.add(loc); 
     } 
    } 
    return results; 
} 

不过说真的,我找不到如何生成我的范围之内的位置。

这里有什么帮助吗?非常感谢你。

+0

谢谢keyser5053。这是问题,我不知道如何自己生成坐标,因为我不知道要使用的坐标范围。 – pindleskin

+0

你似乎知道半径。这就是你所需要的。 – keyser

+0

是的,半径是100米。我的问题是涉及数学,我会继续思考,谢谢。 – pindleskin

回答

1

如何随机产生的坐标自己呢?使用当前位置可以对这些数字设置限制。使用当前坐标和半径可以得到随机数的跨度。随机新的跨度X =旧的X + - 半径

我建议在-1和1之间生成一个随机数,然后将其与半径相乘。这意味着生成坐标的最大值是半径(最小值是-radius)。将此值添加到当前位置坐标将为您提供Old X + - radius之间的值。总结:

(在-1和1之间的随机数)*半径+(旧x)=旧x的半径内的新x。 (!OBS从0到1)

随机数的示例代码:

import java.util.Random; 

Random r = new Random(); 
double zeroToOne = r.nextInt(1001)/1000 

这里的Java文档随机:Random

+0

我想我现在明白了,非常感谢你,试试看。 – pindleskin

+0

@pindleskin编辑过的公式,以便它不会给你比新的坐标更大的坐标(从-1开始跨度) – keyser