iphone - distanceFromLocation准确性

时间:2012-01-27 03:27:48

标签: objective-c

我在distanceFromLocation函数中发现了这个问题,其中返回值不准确。请确认我是否做错了或功能有问题。

CLLocation *locA = [[CLLocation alloc] initWithLatitude:5.321008 longitude:100.290131];
CLLocation *locB = [[CLLocation alloc] initWithLatitude:5.321008 longitude:100.290138];
CLLocationDistance distance = [locA distanceFromLocation:locB];
NSLog(@"distance: %f, locA: %f,%f, locB: %f,%f",distance,locA.coordinate.latitude,locA.coordinate.longitude,locB.coordinate.latitude,locB.coordinate.longitude);

输出结果为:

distance: 0.775644, locA: 5.321008,100.290131, locB: 5.321008,100.290138

两个地点都在附近,应该不到10米。但是,该功能返回较大的距离。选中http://jan.ucc.nau.edu/~cvm/latlongdist.html等网站,距离应为:

Distance between 5.321008N 100.290131E and 5.321008N 100.290138E is 0.0008 km

2 个答案:

答案 0 :(得分:1)

如果您将其转换为千分尺,您的答案以米为单位,您得到的0.000775 km大致相同。有关详情,请参阅reference documentation from apple

答案 1 :(得分:0)

这是iPhone的GPS问题,而不是编码问题。

由于iphone主要用于做其他事情,因此该制造商不会使用重型GPS芯片 - 例如Sirf Star III。这会消耗电池寿命。相反,手机部分依赖于自9/11以来为手机授权的另一个协议,它计算距离手机信号塔的距离并进行三边测量以获得近似值。如果芯片组可以找到4颗卫星,则三边测量与较弱的GPS芯片组一起工作。结果是,当使用GPS功能时,iphone通常超过40英尺。像Garmin这样的BTW普通手持GPS装置(不是差速器GPS装置)通常会长达2-3米。

在维基百科上查找差分GPS以获得更多信息。