捕获当前位置并计算距离

时间:2010-08-31 18:14:15

标签: iphone

我一直在看这个。我找到了很多帖子并查看了文档,但是我无法正常工作。我已经实施了核心位置,并且没有任何问题,即

NSLog(@"Description: %@\n", [newLocation description]);

说明详细信息显示在日志中。

我希望在用户点按按钮时捕捉当前位置,并在他们开始移动时间歇性地重新捕捉其位置。使用此信息,我想计算起点和当前点之间的距离。

我知道我可以使用以下内容:

CLLocationDistance distance = [myLocation distanceFromLocation:restaurantLocation]

计算距离,但我不知道如何捕捉当前位置。

如果有人可以发布一些很棒的示例代码。我接近让这个工作,只需要最后推动线。

此致 斯蒂芬

第2部分:自从原帖以来,我已经取得了一些进展。详情如下:

#import "MyCLController.h"


@implementation MyCLController

@synthesize locationManager;
@synthesize delegate;

- (id) init {
    self = [super init];
    if (self != nil) {
        self.locationManager = [[[CLLocationManager alloc] init] autorelease];
        self.locationManager.delegate = self; // send loc updates to myself
    }
    return self;
}

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{
    [self.delegate locationUpdate:newLocation];

    CLLocation *item1 = [[CLLocation alloc] initWithLatitude:newLocation.coordinate.latitude longitude:newLocation.coordinate.longitude];
    CLLocation *item2 = [[CLLocation alloc] initWithLatitude:oldLocation.coordinate.latitude longitude:oldLocation.coordinate.longitude];

    int meters = [item1 getDistanceFrom:item2]; 
    NSLog(@"Distance-d: %d", meters);

    [item1 release];
    [item2 release];


}


- (void)locationManager:(CLLocationManager *)manager
       didFailWithError:(NSError *)error
{
    [self.delegate locationError:error];
}

- (void)dealloc {
    [self.locationManager release];
    [super dealloc];
}

@end

我在这里计算距离是正确的,还是应该在locationUpdate方法中的NewWorkoutViewController.m中进行计算?

1 个答案:

答案 0 :(得分:0)

您在位置管理器上设置了一个委托,该位置将在位置更改时被调用。您可以通过指定距离过滤器来控制(间接)调用它的频率,这样只有当位置移动了至少那个数量时才会获得回调。