如何同时从CLLocationManager计算所有gps数据

时间:2014-10-04 08:23:49

标签: ios gps cllocationmanager cllocation

我需要在程序中计算所有gps参数,所以我使用这段代码:

(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    CLLocation* loc = [locations lastObject]; 

收集loc对象中的所有gps测量值(高度,速度等),我有纬度/长度信息(loc.coordinate.lattitudeloc.coordinate.longitude),但这些是新的测量坐标。

由于我还想计算测量之间的距离,如何检索" new"坐标和" old" didUpdateLocations方法的坐标?

如果我在程序中使用didUpdateToLocation方法添加另一个locationManager调用(将提供旧坐标和新坐标):

(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation
    fromLocation:(CLLocation *)oldLocation {

根本没有调用初始的locationManager方法(didUpdateLocations),所以我无法计算所有gps数据加上距离......

1 个答案:

答案 0 :(得分:0)

成功获得属性副本后,我有这个工作代码,但我无法理解:

  • (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { _locManagerIteration ++; NSLog(@“位置管理器迭代=%ld”,_ locManagerIteration);

    CLLocation * loc = [locations lastObject]; //位置保证至少有一个对象

    if(_locManagerIteration == 1){//初始化第一个过去的坐标对象     self.pastCoordinate = [locations lastObject]; } else {     CLLocationDistance _pointDistance = [self.pastCoordinate distanceFromLocation:loc];     NSLog(@“POINT TO POINT DISTANCE =%f”,_ pointDistance);     self.pastCoordinate = [locations lastObject]; } NSLog(@“POINT TO POINT DISTANCE =%f”,_ pointDistance);

    _totalDistance = _totalDistance + _pointDistance; //计算总距离 _totalDistance = _totalDistance / 1000; //翻译公里的总距离 在上一节中,CLLocationDistance调用正确地将距离以米为单位放置在我的全局变量_pointDistance中。我打印_pointDistance变量并查看数字(NSLog ...)。但是,当我再次在if-then语句之外打印相同的全局变量时,该值始终为零...

在else括号内,_pointDistance变量在XCODE中有一个黑色(并打印该值),而else括号外面显示为绿色,值为零....无法理解它...