2012-02-20 56 views
0

我已經在SQLite數據庫中存儲了一些緯度和經度,如截圖所示。SQLite - 從表中檢索經緯度集合

enter image description here

數據庫名稱:database

表名:table

表中字段表:

* Name 

* Score 

我開發一個iPhone應用程序。在這方面,如果我給一個latitudelongituderange(距離)作爲輸入,我應該從數據庫中給出range的結果得到了一套latitudes & longitudes。例如,

如果我給的輸入參數

Latitude -> 40.7000, Longitude -> -73.9500 and Range -> 30 miles,應該檢查在給定的rangeLatitude & Longitude數據庫並返回result。 因此,result

40.752199, -73.996696 
40.793019, -73.969574 
40.750898, -73.86898 
40.675431, -73.954811 
40.68194, -73.927689 

我怎麼能在iPhone上運行了這一點?提前致謝。

回答

1

你在找什麼叫做Haversine功能。這個頁面有很好的SQLite功能,運行良好,速度快。

http://www.thismuchiknow.co.uk/?p=71

如果一個不爲你工作,尋找半正矢,你會發現一個沒有。

很多人需要在SQL中添加「WHERE距離< 30」。您可能還需要調整用於獲取里程而不是公里的數字。

1

我可以看到兩種不同的方式來解決你的任務。

  1. 爲了使一些數學上相當複雜的SQL請求。選擇其中(x-center_x)^ 2 + - (也沒有原諒你展示英里,但在畢業半徑不)(Y center_y)^ 2 <半徑^ 2

  2. 閱讀所有座標從DB與緯度rande r-30英里< center_x < r + 30英里。而不是減少所有不符合你需求的座標......那麼你可以使用CoreLocation框架。 「[location1 getDistanceFrom:location2]」