所以我希望能夠顯示一個位置列表(由郵政編碼給出),當用戶請求所有位置在他們當前位置的x英里(由郵政編碼給出)時。iOS - 獲取當前郵政編碼X英里範圍內的位置?
有沒有辦法做到這一點:在MySQL的
- 直接? (即僅返回用戶的郵政編碼X英里範圍內的數據庫中的位置)。這比將所有位置返回到iOS並使用MapKit方法過濾出X英里內的地方效率要高效得多。
所以我希望能夠顯示一個位置列表(由郵政編碼給出),當用戶請求所有位置在他們當前位置的x英里(由郵政編碼給出)時。iOS - 獲取當前郵政編碼X英里範圍內的位置?
有沒有辦法做到這一點:在MySQL的
一個非常非常簡單的折中的解決辦法:每度緯度等於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)
有偷看[這裏](http://stackoverflow.com/questions/1006654/fastest-way-to-find-distance -between-兩LAT-長點)! –
請查看@AdamSears評論。這是好方法。 – vivek