2014-04-16 102 views
2

我需要我的代碼幫助。 我想獲得最大緯度和最大經度(以度爲單位),給定以米爲單位的半徑和以經度和緯度(以度爲單位)的實際位置。 有人可以幫我嗎?獲取給定半徑(米)和位置的最大經度和緯度

謝謝!

+2

你可以發佈你的代碼,並告訴我們你到目前爲止嘗試過嗎? –

+0

如果半徑非常小,則可以將點的切線繪製到您的球體的點附近以獲取它們的經度和緯度,因爲您可以認爲地球在足夠小的距離上是平坦的。 –

+0

您能更準確地瞭解您的問題嗎,所以我們可以找到更好的解決方案?如果您嘗試搜索圍繞點的範圍內的數據庫對象,請考慮查看http://stackoverflow.com/questions/22387682/coordinates-comparison-in-database –

回答

9

首先,每個緯度包含appx 111.1 km,所以很容易重新計算線性增量到緯度增量。

其次,1經度的線性外觀不同,取決於緯度:接近極點的小,接近赤道的大。近似公式如下:

kmInLongitudeDegree = 111.320 * Math.cos(latitude/180.0 * Math.PI) 

結合這一點,很容易得到緯度和經度的增量,將覆蓋你的圈子:

deltaLat = radiusInKm/111.1; 
deltaLong = radiusInKm/kmInLongitudeDegree; 

minLat = lat - deltaLat; 
maxLat = lat + deltaLat; 
minLong = long - deltaLong; 
maxLong = long + deltaLong; 

爲了得到更精確的計算,看看這裏:http://en.wikipedia.org/wiki/Longitude(部分經度的長度)。

在Android上,要獲取一個緯度包含多少米,請使用2個Location對象:一個具有當前座標,另一個緯度偏移0.1度,然後計算它們之間的距離並乘以10.與經度相同。

+0

很棒!非常感謝你@Salauyou! 這是我需要的! – Gio

+1

@Gio歡迎您。我剛剛添加了最後一段如何在Android上以更智能的方式進行操作。它會給出更精確的結果,因爲計算是在WGS84橢球體上執行的,而不是球體。 –

+0

謝謝!我正在使用它的Android! – Gio

相關問題