2013-01-24 188 views
1

我想從數據庫中獲得距離給定點2公里內某些指定距離的點。爲了這個,我使用sqllite下面的查詢,找到多個點之間的距離

public Cursor GetLoc(int lat, int longi, int dist) 
    { 
     Cursor c = db.rawQuery("SELECT *, ((Math.acos(Math.sin("+ lat +"* PI()/180) * Math.sin("+ LATITUDE +"* PI()/180) + Math.cos("+ lat +"* PI()/180) * Math.cos("+LATITUDE+"* PI()/180) * Math.cos(("+ longi +" - "+LONGITITUDE+") * PI()/180)) * 180/PI()) * 60 * 1.1515 * 1.609344) AS distance FROM " + LOCATION_TABLE +" WHERE distance = " + dist, null); 
     return c; 
    } 

在此查詢緯度和LONGITITUDE是LOCATION_TABLE列。

此查詢給出正確的結果在MySQL,但在這裏它給這個錯誤

android.database.sqlite.SQLiteException: near "(" 

我沒有得到其中的查詢問題。 Plz的幫助。

+1

如果您將數據從數據庫中提取出來,將其存儲在內存中,然後計算計算,您將會有更輕鬆的時間。我有一種感覺,要求sqllite做計算並不是那麼有效。 –

+0

另外,爲什麼你使用trig函數進行簡單的距離計算? [畢達哥拉斯定理](http://en.wikipedia.org/wiki/Pythagorean_theorem)可以幫助你在這裏... – Geobits

+0

@ stealth-rabbi,我知道這種方式,但如果1000個位置被保存在數據庫中比它會影響程序效率,因爲我必須在地點改變時運行此功能。你認爲在保存大量位置時進行這種處理是個好主意嗎? – user1743317

回答

2

如果您使用的是Android,我建議您使用Location類的distanceTo()方法。我不會要求DB執行此操作

更多信息here