CLLocation - 向坐标添加2km或2000m半径

时间:2011-10-11 17:57:06

标签: iphone latitude-longitude cllocation

如何将半径添加到CLLocation坐标?我想要的是查看客户在特定坐标附近的位置。

我需要的是在坐标上添加2000米或2公里。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您不能为坐标“添加半径”。如果你有CLLocation个对象(比如loc1和loc2),你可以做的是计算它们之间的距离:

CLLocationDistance dist = [loc1 distanceFromLocation:loc2];

并查看dist(以米为单位)是否大于或小于2000.0。

坐标纬度/经度(极坐标)和距离之间的转换很复杂,这就是SDK为您提供此功能的原因。

答案 1 :(得分:1)

由于距离很小,您可以使用等距离近似。这种近似比使用Haversine公式更快。因此,要获得从参考点(lat1 / lon1)到您正在测试的点(lat2 / lon2)的距离,请使用下面的公式。重要说明:您需要将所有纬度/经度点转换为弧度:

R = 6371  // radius of the earth in km
x = (lon2 - lon1) * cos( 0.5*(lat2+lat1) )
y = lat2 - lat1
d = R * sqrt( x*x + y*y )

如果d小于2,则您的点位于参考点的2公里范围内。

要有效地游行,请在经度上点积分。 2度的经度将超过2公里(除非你靠近极点),因此你不需要经过这些经度。