大家好,欢迎来到IT知识分享网。
由于iOS不能直接控制到GPS,一般来说我们都会使用CLLocationManager来获取地理位置信息,我们会使用
manager.desiredAccuracy = kCLLocationAccuracyBest;
来请求精确度最高的地理位置信息。但是有个时候请求的地理位置信息偏差很大。
不是误差的问题,是完全不能用的问题。其实 CLLocation
有一个horizontalAccuracy
属性,我们可以通过它来控制精确度问题。比如我们要求精确度为200米,就可以这样写:
- (void)locationManager:(CLLocationManager *)Lmanager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { if (newLocation.horizontalAccuracy < 200 && newLocation.horizontalAccuracy != -1){ //Many many code here... } else { [Lmanager stopUpdatingLocation]; //停止获取 [NSThread sleepForTimeInterval:10]; //阻塞10秒 [Lmanager startUpdatingLocation]; //重新获取 } }
CLLocation
的 horizontalAccuracy
属性精确度是米,当值为-1的时候代表定位不可信,所以我们可以通过这个方式筛选掉不符合规格的数据,并且要求重新获取地理位置信息。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32720.html