我有一个包含大约1,000个对象的数组,每个对象都有一个精确的坐标值。我想做的是,在按下搜索按钮时检测当前位置并计算与该位置最近的10个对象。您有什么建议可以帮助我完成这个任务吗?谢谢。
我有一个包含大约1,000个对象的数组,每个对象都有一个精确的坐标值。我想做的是,在按下搜索按钮时检测当前位置并计算与该位置最近的10个对象。您有什么建议可以帮助我完成这个任务吗?谢谢。
这个公式仅适用于在每个方向上网格相同的平坦表面。这在赤道的小尺度上是正确的,但越远离赤道,经线越接近,而纬线之间的距离仍然保持不变。
例如,从奥克兰到一度纬度约为111.2公里,一度经度约为88.8公里。因此,该网格不是正方形的。实际上,从(0,0)到(0,1)的距离比(1,0)更远。
正确的解决方案是使用苹果的CLLocation及其getDistanceFrom:(或distanceFromLocation:)函数,它基于球体表面(使用WGS84投影)计算真实距离。
马克,
是的,这很容易。你只需要循环遍历数组,并计算每个元素与你当前位置之间的距离。然后,你就可以保留最小距离的十条记录。
距离公式就是:
( (x1 - x2)^2 + (y1 - y2)^2 ) ^ (1/2)
所以我会在循环中使用NSMutableArray
,然后执行一个推入-弹出类型的算法来返回最低的10个。
如果你需要关于坐标代码的帮助,请告诉我。