2012-01-27 51 views
1

我发现这个问题与distanceFromLocation函数返回值不准确。请确认我是否做错了或功能有问题。iphone - 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 

回答

1

你的答案是米,如果你将其转换为kilemeters你0.000775 km这是大致相同的。有关更多信息,请参见reference documentation from apple

+0

只是注意到这一点,谢谢指出 – mnazwan 2012-01-27 03:38:42

0

这是一个iPhone问题,而不是一个编码问题。

由于iPhone手机主要用于做其他事情,因此制造商不会购买重型GPS芯片 - 比如Sirf Star III。这会杀死电池寿命。相反,手机部分依赖于9/11以后针对手机的另一项协议,该协议计算距离手机信号塔的距离,并通过三边测量获得近似值。如果芯片组可以找到4颗卫星,则三角测量可以与较弱的GPS芯片组结合使用。结果是,使用GPS功能时,iPhone通常超过40英尺。顺便说一句,像Garmin这样的常规手持GPS设备(不是surveryors差分GPS设备)通常关闭2-3米。

查看维基百科上的差分GPS以获取更多信息。