2012-02-14 40 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