我需要在程序中计算所有gps参数,所以我使用这段代码:
(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
CLLocation* loc = [locations lastObject];
收集loc对象中的所有gps测量值(高度,速度等),我有纬度/长度信息(loc.coordinate.lattitude
和loc.coordinate.longitude
),但这些是新的测量坐标。
由于我还想计算测量之间的距离,如何检索" new"坐标和" old" didUpdateLocations
方法的坐标?
如果我在程序中使用didUpdateToLocation方法添加另一个locationManager调用(将提供旧坐标和新坐标):
(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
根本没有调用初始的locationManager方法(didUpdateLocations),所以我无法计算所有gps数据加上距离......
答案 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括号外面显示为绿色,值为零....无法理解它...