2014-07-03 2 views
-1

У меня есть приложение, которое показывает пользователю свое текущее положение. Тем не менее, в первый раз, когда я вызываю функцию, он показывает неправильный адрес, но после второго вызова он обычно показывает правильный.Метод вызова несколько раз

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

- (IBAction)getCurrentLocation:(id)sender { 
locationManager.delegate = self; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest; 

[locationManager startUpdatingLocation]; 

Есть ли простой способ сделать это?

Спасибо заранее, все лучшие

+0

locationManager delegate отвечает за вас, – CW0007007

+0

Может быть, в первый раз вы получите старые данные о местоположении. Вы должны проверить возраст данных местоположения в методе делегата и решить, показывать ли его. – F1ank3r

+0

Я не уверен, что вы знакомы с «CoreLocation.framework» и как он работает вообще: https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CoreLocation_Framework/_index.html – holex

ответ

0

Повторное использование метода обратного геокодирования с использованием одних и тех же данных не улучшит точность информации - только получение более точного позиционного исправления сделает это.

Основное местоположение вызовет ваш делегатский метод didUpdateLocations, когда у него будет новая информация о местоположении. Вы должны позвонить по этому методу, как только вы позвоните по номеру startUpdatingLocation, но местоположение может быть не очень точным, если GPS-приемник еще не инициализирован.

Последнее расположение - последний объект в массиве locations, отправленный вашему методу делегата. Вы можете изучить свойство [horizontalAccuracy][1]CLLocation, чтобы получить радиус (в метрах) круга неопределенности для местоположения. Вы можете использовать эту информацию, чтобы решить, хотите ли вы отображать адрес для пользователя или продолжать ждать более точного местоположения.

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

-1

Проверьте расположение методы менеджер делегата:

Responding to Location Events 
– locationManager:didUpdateLocations: 
– locationManager:didFailWithError: 
– locationManager:didFinishDeferredUpdatesWithError: 
– locationManager:didUpdateToLocation:fromLocation: Deprecated in iOS 6.0 
Pausing Location Updates 
– locationManagerDidPauseLocationUpdates: 
– locationManagerDidResumeLocationUpdates: 
Responding to Heading Events 
– locationManager:didUpdateHeading: 
– locationManagerShouldDisplayHeadingCalibration: 
Responding to Region Events 
– locationManager:didEnterRegion: 
– locationManager:didExitRegion: 
– locationManager:didDetermineState:forRegion: 
– locationManager:monitoringDidFailForRegion:withError: 
– locationManager:didStartMonitoringForRegion: 
Responding to Ranging Events 
– locationManager:didRangeBeacons:inRegion: 
– locationManager:rangingBeaconsDidFailForRegion:withError: 
Responding to Authorization Changes 
– locationManager:didChangeAuthorizationStatus: 

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

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