【问题标题】:Find coordinates nearest to my current GPS location查找离我当前 GPS 位置最近的坐标
【发布时间】:2012-03-09 09:15:21
【问题描述】:

我的 iPhone 应用程序中有大约 800 个地理坐标作为平面文件。我正在寻找一种有效的方法来找到一种算法,该算法将获取当前用户位置,遍历所有这 800 个坐标并仅提取 10 英里附近的坐标。这可以如何有效地完成?也请分享链接,这将使我对这背后的数学有基本的了解。

【问题讨论】:

  • 你可能会看到这个问题stackoverflow.com/questions/913576/…他们提供了一个简单的例子,虽然它不是用Objective-C编写的。
  • 我认为您遇到的问题与链接的问题不同,因为它正在尝试查找 最接近的,而您正在尝试查找 all 在指定的距离内,对吧?

标签: iphone geolocation gps core-location


【解决方案1】:

这是一个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 个数据点),那么 2D 散列怎么样?只需根据纬度/经度将数据集加载到存储桶或区域中 - 然后,您不必搜索整个数据集 - 只需搜索可能包含匹配项的可能存储桶。

    Good hash function for a 2d index

    【讨论】:

    • 如果我在地图上有 10 个点。我想找到离给定target 点最近的点。然后我拿出我的尺子,计算从target 到每个点的距离。我不会找到最近的点吗?为什么我需要haversine?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多