2012-03-20 61 views
0

我有Android的SQLite數據庫與包含經度,緯度和其他列的表..現在我想獲得所有距離更小的記錄或等於給定的距離。例如,我知道我當前的座標(lat,long),我想從我的表格中獲取距離我最大距離10km處的所有記錄。我的位置和給定的距離值之間的距離的行的Android SQLite查詢

我在棧上發現了一些鏈接,但沒有太多實體。是否有人知道這個問題的優化解決方案?

我以爲我可以得到所有的緯度小於我的緯度+距離的記錄,並且大於我的緯度 - 經度小於我的長距離和大於長途的距離。查詢後,我應該檢查一些不需要的記錄,因爲查詢不是隻返回想要的記錄。 這是一個好主意嗎?

+0

這比Android的一個SQL問題。你可能有更好的運氣搜索SQL答案,或在谷歌上 – Mimminito 2012-03-20 19:58:52

回答

3

你可能想這樣做的兩個部分,

1)運行查詢,你看到的是一個特定的值+或內的所有記錄 - 您的位置當前的緯度/經度,where子句可能看起來像:

其中(@latitude>(lat - .001)和@latitude>(lat - .001))和 (@longitude>(lng- .001)和@longitude>(longitude-。 001))

2)從上面的粗略結果中,使用大圓/半正弦方法來確定每個位置之間的實際距離是多少(大圓/有rsinse已經是android maps api的一部分)。

+0

謝謝你的幫助! – Cata 2012-03-24 21:51:28

3

只是爲了記錄,它可以是有用的。

我不知道你在做什麼,或者如果你有一個後端或服務器。但是,如果你有一個存儲這些位置的服務器,你可以(也應該)使用MongoDB來存儲它。它對地理空間信息有很大的支持。

這裏是你怎麼做你想要使用的是什麼MongoDB的一個例子:http://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-Querying

+0

很高興知道這一點,但我無法訪問服務器.. – Cata 2012-03-20 20:19:36