我有一些关于CoreLocation和GPS的问题。
首先,核心位置使用哪种方法来持续获取用户当前坐标?是什么时候应该检索这些?
其次,每次收到这些坐标时是否应将这些坐标推入NSMutableArray,以便坐标数组代表用户路径?
谢谢,只是想开始让我介意一下。
答案 0 :(得分:11)
非常简短的版本:
首先,在.h和<CLLocationManagerDelegate>
中采用#import <CoreLocation/CoreLocation.h>
协议。
然后在.m go:
- (void)viewDidLoad {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
CLLocationCoordinate2D here = newLocation.coordinate;
NSLog(@"%f %f ", here.latitude, here.longitude);
}
每当Core Location向您说话时,您的-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
方法都会被识别,这应该每隔几秒发生一次。这些CLLocation对象包含有关准确性的信息,因此您可以在该方法中筛选好点。
请务必在某个时候致电[locationManager stopUpdatingLocation]
,然后再致电[locationManager release]
!
祝你好运!
答案 1 :(得分:1)
最好的方法是阅读CLLocationManager Class Reference,它链接到几个示例项目。简短版本:
delegate
属性设置为将接收位置更新的类。CLLocationManagerDelegate
协议。答案 2 :(得分:1)
您可以定义准确度可接受的范围以及您希望接收自动更新的频率(基于距离上一点机制的距离)。您也可以关闭位置管理器,然后通过一些计时器重新打开它。
至于保存位置以构建路径,其并非如此简单。您将首先获得GPS位置,直到达到所需的准确度,并且对于未来的任何点,在获得良好位置之前,您可能会得到多个不准确的位置。因此,建立这些点的列表基本上只是他们的路径列表,以及许多额外的点。 你可以通过只保存那些具有你想要的精度的点来解决这个问题,但在这方面它是一个不完美的世界。
最好的情况我建议您保留两个列表,一个是路径,另一个是您要比较的位置的运行列表,直到您获得高度准确的位置,然后将其放在路径列表中。 一些示例项目按照这些方式执行操作,请检查它们。
答案 3 :(得分:1)
您必须执行以下操作: