我正在尝试计算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函数的范围内。
解决方案:
好的,这似乎是一个模拟错误。相同的代码构建在设备上运行非常好。案子解决了,
发布于 2009-07-25 21:41:23
解决办法:
好吧,这似乎是一个模拟错误。相同的代码构建在设备上运行非常好。案件解决后,你如何向苹果提交一个bug?
发布于 2009-07-23 13:56:43
你是说当两个地点拥有完全相同的lat/long时,你实际上得到了NaN?哇..。
您可以做的一件事是测试反向--如果您得到了NaN,请尝试逆转两个CLLocations:
testDistance = [placeLocation getDistanceFrom: userLocation]; 并查看结果是否总是匹配的;也就是说,无论是NaN还是NaN,两者都是匹配的。
另一件要检查的事情是,当您测试时会发生什么。
testDistance = [userLocation getDistanceFrom: userLocation]; 很抱歉,这不是一个答案,但也许我们能找到更多的线索。
发布于 2010-05-29 21:07:02
使用distanceFromLocation:代替
https://stackoverflow.com/questions/1171138
复制相似问题