2012-05-10 85 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