0

我以前从未使用过 MKMapView 或 CoreLocation,所以我需要一些帮助。我想获得我当前的位置(可能在 mapView 中显示这个位置)并定期更新我的位置,并每次比较我的新位置和旧位置,看看我是否移动了。

这样的事情可能吗?我怎样才能做到这一点?我已经实现了一个 MKMapView。但是我不确定如何获得当前位置并进行比较以查看我是否正在移动...

谢谢你的帮助!

4

1 回答 1

1

这很简单。设置showsUserLocationYES,你就完成了。文档

为了使它更好一点,您可以在MKMapView每次位置更改时居中。看这里怎么做。

如果你想知道你是否已经移动,你应该将最近的位置存储在一个属性中,然后在委托方法中mapView:didUpdateUserLocation:检查新位置是否与上一个位置不同。

@property (assign, nonatomic) CLLocationCoordinate2D locationCoordinate;
...
@synthesize locationCoordinate = _locationCoordinate;

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.mapView.delegate = self;
}

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    if (userLocation.coordinate.latitude != self.locationCoordinate.latitude ||
        userLocation.coordinate.longitude != self.locationCoordinate.longitude) {
        // We moved
    }
    self.locationCoordinate = userLocation.coordinate;
}

userLocation我实际上不确定是否仅在更改时才调用委托方法。在这种情况下,您不必将位置存储为属性并进行检查,只需实现委托方法并在那里做您的事情。

于 2012-05-07T12:28:22.253 回答