-distanceFromLocation中CLLocation对象的顺序:

这是我第一次在这里发表一个问题,但是我从其他人的问题中find了很多帮助。

我的问题引用了CLLocation-distanceFromLocation:函数。 我假设findA点和B点之间的距离与B点和A点之间的距离相同,但我发现它不是。 我已经在一个非常简单的情况下testing了这个:

 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米可以改变这一点。

我的问题是,这些价值中哪一个是正确的? 此外,如果我testing的位置是重要的,我是否需要总是testing相同的位置(例如用户到目的地和注释到目的地而不是目的地到用户和注释到目的地)?

对不起,这个示例有点偏离了上下文,因为我的项目很大,这说明了我的问题。 任何帮助,将不胜感激,因为这已经使我相当混乱和沮丧。

你观察到的错误是2000年的一部分。大概这种方法中使用的algorithm是针对速度进行优化的,所以按距离sorting位置列表是快速的,而不是精确到毫米。

如果你需要准确的结果,不要使用这些方法,但要find另一种方法。 如果您需要重现的结果,请按照定义的方式排列参数,例如始终以较低的纬度开始。