-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 对象的顺序:的主要内容,如果未能解决你的问题,请参考以下文章

c语言中(c=getchar())!=EOF与c=getchar()!=EOF的区别?

c语言中如何一个函数的多次调用

C/c++中如何产生指定的随机字符

关于C语言中变量在两个.C文件中的调用问题

C语言集合类型逻辑类型

在 C/C++ 中使用 swift 库?