为什么即使我不移动iPad,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秒。

欢迎提出任何建议。

感谢您的支持

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

当你坐在那里拿着你不动的iOS设备时,位置管理器会得到更新的GPS结果。如果结果显示你移动了几英尺(米),那么你的应用程序将获得更新。

事实正好相反。有可能你可以移动但没有得到位置更新。这是不太可能的,因为不精确的位置更新不太可能在你碰巧移动的方向上。

你可以做的一件事是密切关注iOS设备的加速度计数据。如果你得到一个位置更新,但加速度计指示你没有移动,你可以忽略更新

它可能是horizontalAccuracy或verticalAccuracy改变,使位置更精确…这个方法也不适合iOS6,也许你应该使用locationManager: didupdatlocations

听起来你认为移动地图视图的位置与返回用户位置的CLLocationManager回调函数有关…它不是。拖动地图与从操作系统获取位置更新无关。

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

最新更新