2013-10-21 148 views
0

我有我的數據庫中的地點列表,它們都有經度/緯度。從地理位置獲得距離地理位置100米的地點列表

在我的應用程序中,我得到了用戶位置,我想獲取距離他100米遠的所有地方。

要做到這一點,我加100米到他的緯度和經度

我試圖做這樣的事情:

double radius = 100; // 100 meters 

    double limitLatitudeNorth = latitude + radius; 
    double limitLatitudeSouth = latitude - radius; 

    double limitLongitudeWest = longitude - radius; 
    double limitLongitudeEast = longitude + radius; 

    StringBuffer query = "latitude < '" + limitLatitudeNorth + "' AND latitude > '" + limitLatitudeSouth + "' AND longitude < '" + limitLongitudeWest + "' AND longitude > '" + limitLongitudeEast + "'"; 

但當然,laitude和經度都沒有米,所以我不知道怎麼做出這筆錢。

公式是什麼?我聽說這取決於全球的地位。假設我在法國。

很多應用程序做到這一點(即:LINE)我以爲我會很容易地找到一個代碼,但我沒有:(

任何想法

回答

0

可以使用distanceTo方法?內部位置類執行以下操作:

Location location = new Location(); 
location.setLatitude(latitude); 
location.setLongitude(longitude); 

Location locationFromDB = new Location(); 
locationFromDB.setLatitude(latitudeFromDB); 
locationFromDB.setLongitude(longitudeFromDB); 

float dist = location.distanceTo(locationFromDB); 
if(dist<100f){ 
    //do here your magic 
} 
+0

問題是在100米找到所有的地方。你找到兩個位置之間的距離。 –

+0

@RishabhBhardwaj再次閱讀問題和答案{ –

0

對於緯度的距離(其跟蹤通過極了一大圈),那麼1弧分= 1海里=1852米(約)。因此1度= 111.12。 km

對於經度變化,您需要將此因子乘以緯度的餘弦值。所以在赤道上,距離變化與緯度變化相同,在極點(cos 90度= 0),等經度線全部匯聚到一個點。