-distanceFromLocation中的CLLocation对象的顺序:

时间:2011-04-05 21:37:14

标签: ios cllocation

这是我第一次在这里发帖提问,但我从其他人的问题中找到了很多帮助。

我的问题涉及-distanceFromLocation:中的CLLocation功能。我假设找到点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 个答案:

答案 0 :(得分:1)

您观察到的错误在2000年是1部分。据推测,此方法中使用的算法针对速度进行了优化,因此对距离列表进行排序很快,而不是精确到毫米。

如果您需要准确的结果,请不要使用这些方法,但要找到其他方法。如果您需要可重复的结果,请以定义的方式对参数进行排序,例如:总是从低纬度开始。