Iphone 如何计算距离用户最近的位置?

Iphone 如何计算距离用户最近的位置?,iphone,Iphone,在我的应用程序中,我有4个地方,它们的经度和海拔高度(给定)。现在我想从用户那里找到最近的地方 所以任何人都可以告诉我它的解决方案,或者为我提供一些源代码或演示 多亏了所有的才花了10秒的时间询问并找到这个,wich描述了如何计算给定纬度和逻辑度的两点之间的距离: 您所要做的就是计算到所有4个点的距离,然后选择最低的一个点 ETDI:我肯定你也得到了纬度,否则你甚至没有具体的坐标。如果这不是一种类型,并且您确实需要考虑海拔高度,请查看,例如用户在x=0,y=0 通过执行以下操作计算距离:平方根

在我的应用程序中,我有4个地方,它们的经度和海拔高度(给定)。现在我想从用户那里找到最近的地方

所以任何人都可以告诉我它的解决方案,或者为我提供一些源代码或演示


多亏了所有的

才花了10秒的时间询问并找到这个,wich描述了如何计算给定纬度和逻辑度的两点之间的距离:

您所要做的就是计算到所有4个点的距离,然后选择最低的一个点


ETDI:我肯定你也得到了纬度,否则你甚至没有具体的坐标。如果这不是一种类型,并且您确实需要考虑海拔高度,请查看

,例如用户在x=0,y=0 通过执行以下操作计算距离:平方根(x2^2和y2^2)
你会有一段距离。查看所有点并比较最短的距离

创建点的位置:

CLLocation* locationx = [[CLLocation alloc] initWithLatitude:lat longitude:lon];
并将这些点与以下内容进行比较:

double distance = [userposition distanceFromLocation:locationx];
保持最近的位置

编辑:
如果你真的是指“经度和高度”,那么我不知道怎么说。

picknick描述了一个本地类方法

这可能会使用Haversine公式(搜索web或stackoverflow进行讨论)来测量距离。 根据我的经验,编写自己的Haversine通常比使用系统/应用程序提供的Haversine要快,尽管这是在Windows上,COM开销可能是“有问题的”

哈弗斯线(以及地球上许多类似的几何体)公式可以在这里找到:


(这是我为数不多的几个定期参考的书签之一!)

这真的不是那么容易,因为地球不是平的,所以我们必须使用。。。这不像是在一张方格纸上计算距离。(对于小距离,这可能有效,但这是错误的,我们不知道Priyankas距离有多大)这只适用于二维欧几里德空间。不是地球表面,也不是经纬度坐标。它只会在低纬度和短距离给出一个合理的数字。到目前为止,你还没有接受你的任何问题的答案——请改变这一点。常见问题解答:当您决定哪个答案对您最有帮助时,单击答案左侧的复选框大纲,将其标记为已接受答案。这让其他人知道你的问题得到了很好的答案。这样做是有帮助的,因为它向其他人表明你从社区中获得了价值。(如果你不这样做,人们通常会礼貌地要求你回去接受更多问题的答案!)为什么要把事情复杂化;-)给出完整的解释-这是一个跨不同语言和环境的常见问题,所以希望其他人能够学习。假设它足够快,那么你的方法会更好!