重现问题的代码:
-(void)testDistance {
NSLog(@"Test distance...");
CLLocation *location1 = [[CLLocation alloc] initWithLatitude:137.02954600000001 longitude:50.543728999999999];
CLLocation *location2 = [[CLLocation alloc] initWithLatitude:55.79676300 longitude:49.10834400];
CLLocationDistance distance = [location1 distanceFromLocation:location2];
NSLog(@"Distance: %lf", distance);
}
iOS 8.4输出:
距离:9021699.415204
iOS 9.1输出:
距离:0.000000
location1
和location2
不是零。
我搜索了类似的问题,但找不到。看起来像iOS 9的bug。你同意吗?你得到类似的结果吗?我想向Apple发送一个错误报告,但我想先确认一下。
我在模拟器上运行代码(iOS 8.4和iOS 9.1)。系统语言设置为俄语,该地区设置为俄罗斯。
更新: lat
和lon
原来是混合的。纬度应位于[-90,90]范围内。在以前的iOS版本中,它仍然产生了一些结果。在iOS 9中,他们返回0
。我不认为这对于这种情况来说是一个很好的回报值,因为它是一个完全有效的价值。我认为他们应该返回一些错误代码(就像他们为nil
做的那样,返回-1
)。至少,它必须在文档中提到。我打算在不久的将来提交错误报告。
答案 0 :(得分:5)
检查location1的纬度值。我猜测纬度范围(-90,90)存在一些不匹配。