如何将半径添加到CLLocation
坐标?我想要的是查看客户在特定坐标附近的位置。
我需要的是在坐标上添加2000米或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公里(除非你靠近极点),因此你不需要经过这些经度。