【问题标题】:CLLocationDistance NaNCLLocationDistance NaN
【发布时间】:2009-07-23 11:28:15
【问题描述】:

我正在尝试使用动态计算 iPhone 应用程序中两组坐标点之间的距离

 - (CLLocationDistance)getDistanceFrom:(const CLLocation *)location 

我看到我开始在奇怪的地方得到 NaN,因此用以下硬编码值仔细调查了此事。

CLLocationDistance testDistance;
placeLocation = [[CLLocation alloc] initWithLatitude:12.236533 longitude:11.011419];
userLocation = [[CLLocation alloc] initWithLatitude:12.236533 longitude:11.011419]; 
testDistance = [userLocation getDistanceFrom:placeLocation];
if(isnan(testDistance))
    NSLog(@"ISNaN!");

[placeLocation release];
[userLocation release];

上面被多次调用,在某些情况下 testDistance 是 NaN。

我担心我在这里遗漏了一些非常简单的东西。有人知道吗?

更新 1:

好的,所以我将上面的代码移到了一个新项目中(将所有内容放在应用程序委托中),循环了 100 次,一切都很好。因此,这表明问题与项目有关,但这几乎没有帮助......因为所有变量都在 1 个函数的范围内。

解决方案:

好的,这似乎是一个模拟器错误。相同的代码构建在设备上运行得非常好。案件已解决。

【问题讨论】:

  • 似乎你做错了什么,也许是因为两个坐标相同?当你输入不同的坐标时会发生这种情况吗?
  • 这两个位置具有相同的纬度/经度值只是巧合。没关系。我输入的任何内容都会不时产生相同的 NaN 结果。这个东西是从 UITableView 调用的,应该返回一个距离,然后将用于填充自定义 UITableVIewCell ...

标签: iphone


【解决方案1】:

您是说当两个位置具有完全相同的纬度/经度时,您实际上得到的是 NaN?哇...

您可能会做的一件事是测试反向 - 如果您得到 NaN,请尝试反转两个 CLLocation:

testDistance = [placeLocation getDistanceFrom: userLocation];  

并查看结果是否始终匹配;即,两种方式都始终是 NaN,或者两种方式都不是 NaN。

要检查的另一件事是测试时会发生什么

testDistance = [userLocation getDistanceFrom: userLocation];  

很抱歉,这不是答案,但也许我们可以得到更多线索。

【讨论】:

  • 这两个位置具有相同的纬度/经度值只是巧合。没关系。我输入的任何内容都会不时产生相同的 NaN 结果。之前尝试过反转它们,但没有什么意义。
  • 您尝试过类似循环的方法吗?当 == NaN 时,再试一次。 (最多可以尝试 10 次)同样,这只是故障排除,这显然不是你想留在生产代码中的东西。
【解决方案2】:

解决方案:

好的,这似乎是一个模拟器错误。 相同的代码构建在设备上运行得非常好。 案例已解决,如何向 Apple 提交错误?

【讨论】:

  • 如果有人帮助您弄清楚如何获得它,则单击您自己的答案是无效的。上面的帖子(由 Amagrammer)确实是答案...不是“模拟器错误”。
  • 完全有效。这不是关于谁是最多的徽章等,而是关于下一个来这里寻找答案的人(非常尊重 Amagrammer 的帮助)。你遇到过同样的问题吗?我经常发现在 sim / 设备上的工作方式往往不同,这是由不同的处理器架构造成的。
【解决方案3】:

使用 distanceFromLocation: 代替

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    相关资源
    最近更新 更多