为什么CLLocationManager事件发生,即使我不移动我的iPad

时间:2014-07-15 02:26:36

标签: ios cllocationmanager

我在.h文件中将CLLocationManager设置为实例变量。

CLLocationManager   *locationManager;

并将其初始化如下。

locationManager = [[CLLocationManager alloc]init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
locationManager.distanceFilter = 10.0;

我想如果我不移动我的iOS设备,只是拖动地图就不会发生事件。但拖动地图时,有时候

- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation

被调用。时间不一样,我的意思是有时会突然发生,有时它会在一段时间后发生,大约30秒。

欢迎任何建议。

感谢您的支持。

3 个答案:

答案 0 :(得分:1)

简单 - GPS不准确。任何GPS设备都会反复计算您的位置。但是由于它的计算不精确,即使你没有移动,结果也会给出不同的位置结果。差异可以是几英寸(厘米)或几英尺(米)。

因此,当您坐在那里时,您的移动iOS设备,位置管理器会获得更新的GPS结果。如果结果显示您移动了几英尺(米),则您的应用会获得更新。

反之亦然。您可以移动但不能获得位置更新。这种可能性要小得多,因为不准确的位置更新不太可能与您刚刚移动的方向完全相同。

您可以做的一件事是密切关注iOS设备的加速计数据。如果您获得了位置更新但加速度计指示您尚未移动,则可以忽略更新。

答案 1 :(得分:0)

它可能是horizo​​ntalAccuracy或verticalAccuracy更改,使位置更精确...此方法也不推荐使用iOS6,也许你应该使用locationManager:didUpdateLocations

答案 2 :(得分:0)

听起来你认为移动地图视图的位置与CLLocationManager回调函数有关,它返回用户的位置......但事实并非如此。拖动地图与从操作系统获取位置更新无关。

您无法控制何时获得这些更新,只有在操作系统能够使用GPS / Wifi确定合理准确的位置时才会发生这种情况。