iPhone MKMapView:从当前位置检测数组中最近的位置

我有一个大约有1,000个对象的数组,每个对象都有一个精确的坐标值。 我想要做的是拿一个我有的搜索按钮,当按下时,检测当前位置并计算10个最近的对象到这个位置。 有什么建议可以解决这个问题吗? 谢谢。

该公式仅适用于每个方向上的网格相同的平面。 这在赤道上是小规模的,但距离赤道越近,经度线越接近彼此,而纬度线仍然是相同的距离。

例如,来自奥克兰的一个纬度是~111.2Km,其中一个经度是~88.8Km。 因此网格不是正方形。 有效地意味着从(0,0)进一步到(0,1)而不是(1,0)。

正确的解决方案是使用Apple的CLLocation及其getDistanceFrom :(或distanceFromLocation :),它根据球体表面计算真实距离(我认为使用WGS84投影)。

标记,

是的,这很容易。 您所要做的就是遍历arrays并计算每个arrays与您当前位置之间的距离。 然后,您可以保留距离最短的十条记录。

距离公式只是:

( (x1 - x2)^2 + (y1 - y2)^2 ) ^ (1/2) 

因此我循环使用NSMutableArray ,然后执行push-pop类型算法以返回最低10。

如果您需要坐标代码的帮助,请告诉我。