2012-02-14 43 views
2

我想知道的准确性,如果有一种方式来获得从一个的MKMapView接收到的位置的精确度。获得一个位置的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"); 
    }  
} 

的圆通常由它包裹轮小蓝色圆圈所以显然是正在发送的精度表示的位置的准确度。

感谢您提供任何帮助。

+0

我施加相同的逻辑,但是使用verticalAccuracy当horizo​​ntalAccuracy没有返回有效的结果。我发现的是: 精度的关键: \t -1.000000 BEST =, \t -2.000000 = NAV, \t 10.000000 = 10M, \t 100.000000 = 100M, \t 1000.000000 =1公里, \t 3000.000000 =3公里 并从地图(使用模拟器)获得的结果是:-1 – csb 2013-02-06 04:47:04

回答

1

CLLocationhorizontalAccuracy属性指示当前实例的坐标如何准确的。

它不是“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

+0

是的,我已将所需的准确性设置为BestForNavigation,但显然不能保证此准确性。 所以我需要通过CLLocationManager获取用户的位置以获得用户当前位置的准确性?对我来说似乎没有意义。 (更多的记忆,力量)。 – user1168056 2012-02-14 14:21:07

0

这是所谓的在所有的委托方法?请确保您已设置showsUserLocation为yes MKMapView例如

+0

是的,正在调用此方法。 – user1168056 2012-02-14 14:19:03