CLLocationManager无法获得蜂窝网络(3G)的定位精度

时间:2014-07-08 04:06:27

标签: ios iphone objective-c ipad core-location

我在使用移动网络定位准确性方面存在问题。

以下是我的问题

  1. 有时,在蜂窝网络(3G)中,位置准确性非常完美

  2. 有时位置准确性并不完美它的一英里差异。

  3. 对于WiFi,它的工作非常完美。

  4. 以下是我的代码

        locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
        [locationManager startUpdatingLocation];
    

    请问我的代码有什么问题。

2 个答案:

答案 0 :(得分:1)

蜂窝网络位置给出了手机存在的大致区域。它基于服务提供商塔。所以我建议使用GPS位置跟踪,以便您获得手机的确切经度和纬度。

经度和纬度可用于查找有关地点,天气等位置的更多详细信息。

请参阅this

答案 1 :(得分:0)

这是因为您无法通过卫星(3G或4G)强制设备位置

您(应用)只能访问设备获取的位置(如果有权限)。

当您具有最高准确度kCLLocationAccuracyBestForNavigation时,它会尝试获得最高准确度(第一个GPS ,然后是三角测量/网络+附加传感器数据)(不推荐,这是仅用于"导航"它消耗太多能量并假设它已插入。)

为此,请参阅Core Location Constants Reference

如果您在户外,起初可能没有确切的位置,可能需要一些时间才能获得手机的最佳位置。

请查看CLLocationManager desiredAccuracy

的文档
  

请求高精度位置数据时,初始事件   由位置服务提供可能没有您的准确性   请求。定位服务可以快速提供初始事件   尽可能。然后它继续确定位置   您要求的准确性,并根据需要提供其他活动,   当这些数据可用时。