我的iPhone应用程序中有大约800个地理坐标作为平面文件。我正在寻找一种有效的方法来找到一个算法,该算法将获取当前用户位置,遍历所有这800个坐标并仅拉动10英里附近的坐标。这样做有多有效?另外,请分享链接,这将使我对这背后的数学有基本的了解。
答案 0 :(得分:4)
这是一个问题的link,其中OP的最终代码可以帮助您了解如何从坐标创建位置以及如何计算它们之间的距离。
以下是创建位置的方法:
CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
以下是如何找到两个位置之间的距离:
CLLocationDistance distance = [locationA distanceFromLocation:locationB]; //CLLocationDistance is a double
但是您不必对位置进行排序。只需循环遍历它们并将近端位置添加到数组中。
答案 1 :(得分:2)
首先,我认为每个人都同意计算距离,你需要使用Haversine函数。
Finding the closest point to a given point
如果搜索时间有问题(迭代你提到的800个数据点)那么 2D哈希怎么样?只需将数据集加载到基于纬度/经度的桶或区域中 - 然后,您就不必搜索整个数据集 - 只搜索可能包含匹配的桶。