使用CLLocation计算两个坐标之间的距离在两部手机上是不同的



我正在使用CoreLocation框架计算两个坐标之间的距离,一个是用户的当前位置,另一个来自服务器,当两部手机紧挨着时,两部手机的距离相差约25米。我使用的是iPhone 4s和iPhone 5s,这是与两部手机上安装的GPS模块的准确性有关,还是我的实现有问题?

CLLocationDistance distance = [newLocation distanceFromLocation:userLocation];

无论是手持GPS还是智能手机接收器都无法为您提供准确的位置。你最多可以得到10到15英尺(3到5米)的精度。如果你在树下或被高层建筑包围,那么你可以期望20到30英尺(6到10米)甚至更高的精度。只有测量师使用的专业GPS设备才能将精度控制在1英寸(2厘米)以下https://support.groundspeak.com/index.php?pg=kb.page&id=673

准确度还取决于你手机使用的蜂窝/无线网络类型。我的经验是,在wifi网络上获得的位置的准确性远远高于在蜂窝数据上获得的准确度。

此外,当您在CLLocationManager的以下代表中获得位置更新时:-

- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
       fromLocation:(CLLocation *)oldLocation
{
}

调查您获得的新位置的"horizontalAccuracy"(newLocation.horizontalAccuracy)。这是坐标可能具有的以米为单位的误差。

/*
 *  horizontalAccuracy
 *  
 *  Discussion:
 *    Returns the horizontal accuracy of the location. Negative if the lateral location is invalid.
 */
@property(readonly, nonatomic) CLLocationAccuracy horizontalAccuracy;

希望能有所帮助。

最新更新