2014-02-07 39 views
3

所以我希望能夠顯示一個位置列表(由郵政編碼給出),當用戶請求所有位置在他們當前位置的x英里(由郵政編碼給出)時。iOS - 獲取當前郵政編碼X英里範圍內的位置?

有沒有辦法做到這一點:在MySQL的

  1. 直接? (即僅返回用戶的郵政編碼X英里範圍內的數據庫中的位置)。這比將所有位置返回到iOS並使用MapKit方法過濾出X英里內的地方效率要高效得多。
+0

有偷看[這裏](http://stackoverflow.com/questions/1006654/fastest-way-to-find-distance -between-兩LAT-長點)! –

+0

請查看@AdamSears評論。這是好方法。 – vivek

回答

0

如果您在數據庫中使用了一個簡單查詢來查找某個距離內的位置。

+0

你能告訴我們一個簡單的查詢_that不必搜索整個數據庫_?英國有大約120萬個郵政編碼。 – gnasher729

0

一個非常非常簡單的折中的解決辦法:每度緯度等於111.11公里距離。如果您正在尋找相隔x英里的地方,則緯度差值必須小於x *(1.609/111.11)。因此,如果您從(LAT,LONG)開始,那麼所有用戶都必須具有LAT-x *(1.609/111.11)< = lat < = LAT + x *(1.609/111.11)。用它來查詢MySQL;如果你正在尋找50英里的距離,你會篩選出很多候選人。

有更好,但更復雜的解決方案。

你不需要MapKit。計算精確的距離非常複雜,但對於小距離和精度不是很高的情況,有一個簡單的方法。每個緯度是111.111公里。每度經度爲111.111 * cos(緯度)km,餘弦角度以度爲單位。從(LAT,LONG)至(緯度,經度)的距離約爲

sqrt ((LAT - lat)^2 + ((LONG - long) * cos (LAT))^2) 
相關問題