多次调用方法

时间:2014-07-03 11:47:41

标签: ios methods

我有一个应用程序,向用户显示他们当前的位置。然而,我第一次调用该函数时显示错误的地址,但在第二次调用后它通常会显示正确的地址。

我希望在显示结果之前调用获取地址5次的函数,从而提高每次调用的准确性。

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

[locationManager startUpdatingLocation];

有没有简单的方法可以做到这一点?

提前谢谢你,一切顺利

2 个答案:

答案 0 :(得分:0)

使用相同的数据多次调用反向地理编码方法不会提高信息的准确性 - 只有接收更准确的位置修复才能做到这一点。

核心位置会在有新的位置信息时调用您的didUpdateLocations委托方法。拨打startUpdatingLocation后,您应该立即拨打此方法,但如果GPS接收器尚未初始化,则位置可能不太准确。

最近的位置是发送到您的委托方法的locations数组中的最后一个对象。您可以检查[horizontalAccuracy][1]的{​​{1}}属性,以获取该位置的不确定性圆的半径(以米为单位)。您可以使用此信息来决定是要向用户显示地址还是继续等待更准确的位置。

请注意,如果用户在室内或GPS接收受阻,您可能永远不会收到更准确的位置。

答案 1 :(得分:-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:

实施这些,然后您可以在位置达到预期后更新您的UI?或者只是在经过一定次数后才更新。