之前我从未使用过MKMapView或CoreLocation,所以我需要一些帮助。 我想得到我当前的位置(也许在mapView中显示这个位置)并定期更新我的位置并每次比较我的新旧位置以查看我是否已经移动。
这样的事情可能吗?我怎样才能做到这一点?我已经实现了MKMapView。但我不知道如何才能得到我现在的位置并进行比较,看看我是否在动......
感谢您的帮助!
答案 0 :(得分:1)
这很简单。将showsUserLocation
设为YES
即可完成。 docs
为了使它更好一些,你可以在每次位置变化时将MKMapView
置于中心位置。请参阅here如何操作。
如果您想知道自己是否已移动,则应将最近的位置存储在属性中,然后在委托方法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
发生更改时调用委托方法。在这种情况下,您不必将位置存储为属性并进行检查,只需实现委托方法并在那里执行操作。