iOS - 获取当前邮政编码X英里内的位置?

时间:2014-02-07 18:21:37

标签: ios mapkit distance

所以当用户请求当前位置x英里内的所有位置(由邮政编码给出)时,我希望能够显示位置列表(由邮政编码给出)。

有没有办法做到这一点:

  1. 直接在mySQL中? (即仅返回数据库中位于用户邮政编码X英里范围内的位置)。这比将所有位置返回到iOS并使用MapKit方法过滤掉X英里内的位置要高效得多。

2 个答案:

答案 0 :(得分:0)

如果你有lat&在数据库中,您可以使用简单的查询来查找特定距离内的位置。

答案 1 :(得分:0)

一个非常非常简单的折衷解决方案:每度度纬度等于111.11 km距离。如果您要寻找相隔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)到(lat,long)的距离约为

sqrt ((LAT - lat)^2 + ((LONG - long) * cos (LAT))^2)