我有几个关于CoreLocation和GPS的问题。iPhone SDK:使用GPS跟踪用户位置
首先,核心位置中的哪个方法用于持续获取用户当前坐标?在什么时间间隔应该检索?
其次,应该将这些坐标来每次被接收到的时间推入的NSMutableArray,使坐标的阵列将代表用户路径?
谢谢,只是想开始让我介意这一点。
我有几个关于CoreLocation和GPS的问题。iPhone SDK:使用GPS跟踪用户位置
首先,核心位置中的哪个方法用于持续获取用户当前坐标?在什么时间间隔应该检索?
其次,应该将这些坐标来每次被接收到的时间推入的NSMutableArray,使坐标的阵列将代表用户路径?
谢谢,只是想开始让我介意这一点。
一个非常简化版本:
首先,采用<CLLocationManagerDelegate>
协议在您的.h和#import <CoreLocation/CoreLocation.h>
。
然后在.M走:
- (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);
}
你-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
方法会ping通每个核心位置有话要说给你,这应该每隔几秒钟发生的时间。这些CLLocation对象包含有关准确性的信息,因此您可以在该方法中筛选出好的点。
一定要打电话[locationManager stopUpdatingLocation]
然后[locationManager release]
在某个时刻!
祝你好运!
最好的办法是阅读CLLocationManager Class Reference,可链接到几个实例工程。短版本:
delegate
属性设置为将接收位置更新的类。CLLocationManagerDelegate
协议。您可以定义什么范围是可接受的准确性,以及您希望接收自动更新的频率(基于距离最后一点机制的距离)。您也可以关闭位置管理器,并随时通过定时器的使用将其恢复。
至于保存位置来建立路径,其并不那么简单。您将不断获得GPS位置,直到达到所需的准确度,并且对于未来的任何点,您可能会在获得良好位置之前得到多个不准确的位置。所以建立这些点的列表基本上只是他们的路径列表,以及许多额外的点。 你可以通过只保存那些有你想要的准确性的点来解决这个问题,但是在这方面它是一个不完美的世界。
我会建议你把两个列表最好的情况,一个是路径,另一个是的,你是在比较,直到你得到一个高度精确的位置,然后把你的路径列表上的位置运行列表。 一些示例项目沿着这些方向行事,请检查它们。
你必须做到以下几点:
忘掉1.如果你没有互联网,你将无法获得设备的坐标。至少不是没有用户按下“发送”。没有用户交互,iOS不允许发送短信。 – 2012-09-29 22:58:46
我可能是错的,应该:的NSLog(@ “%F%F,%@”,here.latitude,here.longitude);不是:NSLog(@“%f%f”,here.latitude,here.longitude); – fuzzygoat 2010-05-20 14:11:11
哦,绝对正确。这会给你一个BAD_ACCESS错误。纠正。 – 2010-05-21 12:32:07
即使应用程序已最小化,更新位置报价器是否也能正常工作? – kmehta 2011-06-14 14:57:46