Iphone CLLocationManager горизонтальное обновление точности. Когда? и откуда я это знаю? - PullRequest
0 голосов
/ 13 января 2011

Мне нужно отобразить горизонтальную точность текущего местоположения на карте в моем приложении.Для этого я поместил строку кода в viewDidLoad ();(_currentLocation - это местоположение CLLocationManager.)

label4Accuracy.text = [NSString stringWithFormat:@"Accuracy: %.fm", _currentLocation.horizontalAccuracy];

И это отображает точность.

Проблема в том, что точность не меняется.Точность горизонтальной точности меняет свою точность, если мы ждем достаточно (хотя и не всегда).

Я хочу, чтобы мое приложение могло изменять точность и отображать его на карте в реальном времени.

Я ожидал, что где-то рядом с CLLocationManager может существовать метод;- (CLLocationAccuracy *) HorizontalAccuracyUpdated ():

, но это не так.Итак, мой вопрос: куда мне поместить строку кода выше, чтобы отобразить горизонтальную точность currentLocation, которая изменяется в соответствии с текущей точностью фактического устройства?

1 Ответ

0 голосов
/ 13 января 2011

Из вашего вопроса неясно, используете ли вы свой собственный экземпляр CLLocationManager или получаете текущее местоположение из MKMapView.

Если вы просто используете MKMapView, ваше представление карты собирается сделать делегатомвызывайте метод - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation каждый раз, когда он обновляет местоположение пользователя, и эта переменная userLocation, которую он передает, будет иметь параметр .horizontalAccuracy, который дает точность в метрах.

Поэтому установите свой контроллер представления в качестве делегата представления карты и реализуйте этот метод и следите за обновлениями.

Если вы на самом деле используете CLLocationManager, то же самое верно, за исключением того, что метод делегата- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation.

...