我在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
答案 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以获得更多信息。