2012-02-18 122 views
1

我的iPhone应用程序中有大约800个地理坐标作为平面文件。我正在寻找一种有效的方法来找到一个将采用当前用户位置的算法,循环遍历所有这800个坐标,并只拉动10英里附近的坐标。这可以做得多有效?也请分享链接,让我对这背后的数学有基本的了解。查找离我目前GPS位置最近的坐标

+1

你或许可以看到这个问题http://stackoverflow.com/questions/913576/finding-the-closest-point-to-a-given-point他们提供了一个简单的例子,虽然它不是用Objective-C编写。 – 2012-02-18 00:30:49

+0

我认为你已经得到了与链接问题不同的问题,因为它试图找到_the closest_,并且你正试图在指定的距离内找到_all_,对吗? – sarnold 2012-02-18 00:46:36

回答

4

这是一个link的问题,其中OP的最终代码可以帮助您了解如何从坐标创建位置以及如何计算它们之间的距离。

这里是如何创建一个位置:

CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; 

这里是如何找到两个位置之间的距离:

CLLocationDistance distance = [locationA distanceFromLocation:locationB]; //CLLocationDistance is a double 

但是你不必位置排序。只需循环遍历它们并将附近的位置添加到数组中即可。

2

首先,我认为每个人都同意计算距离,你需要使用Haversine函数。

Finding the closest point to a given point

如果搜索的时间是一个问题(迭代你所提到的800个数据点),那么怎么样二维散列?只需根据lat/long将数据集加载到存储桶或区域中 - 那么您不必搜索整个数据集 - 只有可能包含匹配的存储桶。

Good hash function for a 2d index

+0

这正是我正在寻找的感谢.. – dreampowder 2013-12-21 20:11:21

+0

如果我在地图上有10点。我想找到给定的“目标”点的最近点。我得到我的尺子并计算从“目标”到每个点的距离。我不会找到最近的点吗?为什么我需要沙滩车? – dimitris93 2016-05-18 23:28:23

相关问题