2016-02-26 127 views
0

標題說明了一切,我需要爭奪百米半徑隱私的原因中緯度/經度座標。我數學太可怕而無法弄清楚如何100m的轉換爲經/緯度...爭奪緯度經度座標的JavaScript

例如,我想有一個像位置:

lat: 52.5037086 
lng: 13.434223100000054 

需要100米半徑範圍內的爭搶這個隨機產生,也就是說所產生的座標最遠可以從任何方向的原始座標都是100m。

我已經看到了這個公式各地:

d = acos(sin(φ1)⋅sin(φ2) + cos(φ1)⋅cos(φ2)⋅cos(Δλ)) ⋅ R 

where: 
    φ = latitude, λ = longitude 
    R = radius of earth 
    d = distance between the points 

不知道如何在JavaScript中做到這一點,雖然。這些「點」是Google Map中的標記,如果它有所作爲。

說實話,它甚至不需要爲圓形,100m內乘100米正方形只是隨機位置會正常工作。

+0

所以基本上你需要100米半徑圓形區域的中心應該是(52.5037086,13.434223100000054)對不對? – Banik

+0

是的,然後以某種方式使用math.random在該半徑內選取一個點。 –

回答

0

在這麼小的範圍,我們可以對問題的線性近似和球形地球模型的工作。

考慮,你是在一個位置(lat, long)。然後,將lat增加1°導致距離原始點d_lat = Pi * R * 1°/180°(簡單的圓周)的距離。

同樣,在一個d_long = cos(lat) * Pi * R * 1°/180°距離的增加long通過1°的結果。

然後,你可以計算經度和緯度的最大變化:

maxChangeLatitude = 100 m/d_lat 
maxChangeLongitude = 100 m/d_long 

查找在這個廣場的隨機點,你有你的觀點:

newLat = lat + (2 * Math.random() - 1) * maxChangeLatitude; 
newLong = long + (2 * Math.random() - 1) * maxChangeLongitude;