【问题标题】:Get the accuracy of an MKMapView Location获取 MKMapView 位置的准确性
【发布时间】:2012-03-05 21:21:39
【问题描述】:

我想知道是否有办法从 MKMapView 获取接收到的位置的准确性。

我原以为下面的代码会起作用,但事实并非如此。我也可以直接登录该属性吗?

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {    

    if (userLocation.location.horizontalAccuracy == kCLLocationAccuracyBest) {
        NSLog(@"Best");
    }
    if (userLocation.location.horizontalAccuracy == kCLLocationAccuracyBestForNavigation) {
        NSLog(@"Best for nav");
    }
    if (userLocation.location.horizontalAccuracy == kCLLocationAccuracyHundredMeters) {
        NSLog(@"100m");
    }
    if (userLocation.location.horizontalAccuracy == kCLLocationAccuracyKilometer) {
        NSLog(@"km");
    }
    if (userLocation.location.horizontalAccuracy == kCLLocationAccuracyNearestTenMeters) {
        NSLog(@"10m");
    }
    if (userLocation.location.horizontalAccuracy == kCLLocationAccuracyThreeKilometers) {
        NSLog(@"3km");
    }    
}

一个圆圈通常代表一个位置的准确性,将它包裹在蓝色的小圆圈周围,因此很明显是在发送准确性。

感谢您提供的任何帮助。

【问题讨论】:

  • 我应用了相同的逻辑,但在 Horizo​​ntalAccuracy 没有返回有效结果时使用了 verticalAccuracy。我发现: 精度键:-1.000000 = BEST,-2.000000 = NAV,10.000000 = 10m,100.000000 = 100m,1000.000000 = 1km,3000.000000 = 3km,从地图(使用模拟器)获得的结果是:-1

标签: iphone ios mkmapview userlocation


【解决方案1】:

CLLocation 中的horizontalAccuracy 属性表示坐标的当前实例 的精确度。

地图视图使用的不是“desiredAccuracy”(可以在CLLocationManager 中设置和读取的属性)。据我所知,MKMapView 中无法访问该设置。

但是,在面包屑示例应用程序中,BreadcrumbViewController.m 文件中有这样的注释:

// Note: we are using Core Location directly to get the user location updates.
// We could normally use MKMapView's user location update delegation but this does not work in
// the background.  Plus we want "kCLLocationAccuracyBestForNavigation" which gives us a better accuracy.

所以这意味着MKMapView 至少没有使用kCLLocationAccuracyBestForNavigation

【讨论】:

  • 是的,我已将所需的准确度设置为 BestForNavigation,但显然不能保证此准确度。所以我需要通过 CLLocationManager 获取用户的位置来获取用户当前位置的准确性吗?对我来说似乎有点无意义。 (更多的内存,力量)。
【解决方案2】:

是否调用了这个委托方法?确保您已将 showsUserLocation 设置为 YES 以用于 MKMapView 实例

【讨论】:

  • 是的,正在调用这个方法。
猜你喜欢
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多