-distanceFromLocation 中 CLLocation 对象的顺序:
Posted
技术标签:
【中文标题】-distanceFromLocation 中 CLLocation 对象的顺序:【英文标题】:Order of CLLocation objects in -distanceFromLocation: 【发布时间】:2011-04-05 21:37:13 【问题描述】:这是我第一次在这里发问题,但是我从其他人的问题中找到了很多帮助。
我的问题是指CLLocation
中的-distanceFromLocation:
函数。我曾假设找到 A 点和 B 点之间的距离与 B 点和 A 点之间的距离相同,但我发现事实并非如此。我在一个非常简单的案例中对此进行了测试:
CLLocation *test1 = [[CLLocation alloc] initWithLatitude:37.529530 longitude:-122.259232];
CLLocation *test2 = [[CLLocation alloc] initWithLatitude:47.900002 longitude:-103.495102];
NSLog(@"%f vs %f",[test2 distanceFromLocation:test1],[test1 distanceFromLocation:test2]);
[test1 release];
[test2 release];
对此的输出是 1907269.942754 与 1908105.959114,相差近 900 米。
虽然 900 米可能只是一小部分,但我试图确定用户是否比注释更接近某物,而 900 米可以改变这一点。
我的问题是,如果有的话,这些值中的哪一个是正确的?此外,如果我测试的位置很重要,我是否需要始终针对同一位置进行测试(例如,用户到目的地和注释到目的地,而不是目的地到用户和注释到目的地)?
对不起,示例有点脱离上下文,因为我的项目相当大,这说明了我的问题。任何帮助都将不胜感激,因为这给我带来了相当多的困惑和沮丧。
【问题讨论】:
【参考方案1】:您观察到的误差是 2000 年的 1 部分。大概此方法中使用的算法针对速度进行了优化,因此按距离对位置列表进行排序很快,而不是精确到毫米。
如果您需要准确的结果,请不要使用这些方法,而要寻找其他方法。如果您需要可重现的结果,请以定义的方式对参数进行排序,例如总是从低纬度开始。
【讨论】:
以上是关于-distanceFromLocation 中 CLLocation 对象的顺序:的主要内容,如果未能解决你的问题,请参考以下文章