CLLocation distanceFromLocation:在iOS 9上返回零。这是一个错误吗?

时间:2015-10-26 12:43:19

标签: ios geolocation ios9 core-location

重现问题的代码:

-(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

location1location2不是零。

我搜索了类似的问题,但找不到。看起来像iOS 9的bug。你同意吗?你得到类似的结果吗?我想向Apple发送一个错误报告,但我想先确认一下。

我在模拟器上运行代码(iOS 8.4和iOS 9.1)。系统语言设置为俄语,该地区设置为俄罗斯。

更新: latlon原来是混合的。纬度应位于[-90,90]范围内。在以前的iOS版本中,它仍然产生了一些结果。在iOS 9中,他们返回0。我不认为这对于这种情况来说是一个很好的回报值,因为它是一个完全有效的价值。我认为他们应该返回一些错误代码(就像他们为nil做的那样,返回-1)。至少,它必须在文档中提到。我打算在不久的将来提交错误报告。

1 个答案:

答案 0 :(得分:5)

检查location1的纬度值。我猜测纬度范围(-90,90)存在一些不匹配。