2012-02-14 10 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, когда horizontalAccuracy не возвращал действительный результат. То, что я обнаружил, что: Точность Ключ: \t -1,000000 = BEST, \t -2,000000 = СЧА, \t 10,000000 = 10 м, \t 100,000000 = 100m, \t +1000,000000 = 1 км, \t +3000,000000 = 3 км и результат, полученный на карте (с использованием симулятора): -1 – csb

ответ

1

horizontalAccuracy свойства в CLLocation показывает, насколько точно текущий экземпляр координат есть.

Это не «желаемая функция» (свойство, которое можно установить и прочитать в 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

0

Этот метод делегата вообще называется? Убедитесь, что вы установили showsUserLocation ДА для MKMapView экземпляра

+0

Да, этот метод вызывается. – user1168056

Смежные вопросы