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

时间:2010-11-11 10:47:41

标签: iphone objective-c ios mkmapview

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

2 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:1)

标记,

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

距离公式只是:

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

所以我循环播放NSMutableArray,然后执行push-pop类型算法以返回最低的10。

如果您需要有关坐标代码的帮助,请与我们联系。