ios - 使用 wifi 和 3G 给出两点之间的不同距离

标签 ios iphone cllocationmanager cllocationdistance

我正在计算两个位置之间的距离,如下所示

             CLLocation *locA = [[CLLocation alloc] initWithLatitude:lat longitude:lon];

            CLLocationCoordinate2D coordinate = [self getLocation];

            CLLocation *locB = [[CLLocation alloc] initWithLatitude:coordinate.latitude   longitude:coordinate.longitude];

            CLLocationDistance distance = [locA distanceFromLocation:locB];


            CLLocationDistance kilometers = distance / 1000.0;

但是当我连接到 wifi 和 3G 网络时它给出不同的结果。如何为两者获得相同的结果。

最佳答案

您总是不会为两者获得相同的位置。事实上,如果您明天回到完全相同的位置并打开定位服务,即使您使用相同的技术,您也可能无法获得相同的纬度和经度。

您从 CLLocationManager 接收到的纬度和经度并不是一门精确的科学。事实上,如果您查看收到的原始 CLLocation 对象,您会注意到有一个 horizo​​ntalAccuracy 属性反射(reflect)了坐标的准确/不准确程度。当您第一次启动位置服务时,您甚至会看到多个位置进来,而且通常准确性越来越高。

但它永远不会是完美的,您也不应期望它是完美的。这就是为什么在真实设备上测试位置感知代码很重要的原因之一,因为模拟器会让人误以为绝对准确,这在现实世界中是不存在的。您应该编写预料到这一点的代码。而且,如果不出意外,您应该开始考虑从位置管理器收到的对象的 horizo​​ntalAccuracy

关于ios - 使用 wifi 和 3G 给出两点之间的不同距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28563107/

相关文章:

iphone - 如何使用ASIHttpRequest创建请求,如下所示?

iphone - 获取实际代码中的 Xcode 项目名称

ios - 当前位置在谷歌地图中不起作用

ios - 自定义 UIButton iOS 应用程序

ios - UIWebView 在 iOS 中加载 HTML 后不会返回

iphone - iOS - 在不使用 ARC 的应用程序中使用 Twitter Reverse auth

iphone - @dynamic 和@synthesize 之间有什么区别?

ios - 如何减小 Unity iOS Build 的大小并提高速度

iphone - 使用 CLLocationManager 的自定义位置管理器类

ios - 钥匙串(keychain)有时会返回空值