我在.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秒。
欢迎任何建议。
感谢您的支持。
答案 0 :(得分:1)
简单 - GPS不准确。任何GPS设备都会反复计算您的位置。但是由于它的计算不精确,即使你没有移动,结果也会给出不同的位置结果。差异可以是几英寸(厘米)或几英尺(米)。
因此,当您坐在那里时,您的移动iOS设备,位置管理器会获得更新的GPS结果。如果结果显示您移动了几英尺(米),则您的应用会获得更新。
反之亦然。您可以移动但不能获得位置更新。这种可能性要小得多,因为不准确的位置更新不太可能与您刚刚移动的方向完全相同。
您可以做的一件事是密切关注iOS设备的加速计数据。如果您获得了位置更新但加速度计指示您尚未移动,则可以忽略更新。
答案 1 :(得分:0)
它可能是horizontalAccuracy或verticalAccuracy更改,使位置更精确...此方法也不推荐使用iOS6,也许你应该使用locationManager:didUpdateLocations
答案 2 :(得分:0)
听起来你认为移动地图视图的位置与CLLocationManager回调函数有关,它返回用户的位置......但事实并非如此。拖动地图与从操作系统获取位置更新无关。
您无法控制何时获得这些更新,只有在操作系统能够使用GPS / Wifi确定合理准确的位置时才会发生这种情况。