我以前从未使用过 MKMapView 或 CoreLocation,所以我需要一些帮助。我想获得我当前的位置(可能在 mapView 中显示这个位置)并定期更新我的位置,并每次比较我的新位置和旧位置,看看我是否移动了。
这样的事情可能吗?我怎样才能做到这一点?我已经实现了一个 MKMapView。但是我不确定如何获得当前位置并进行比较以查看我是否正在移动...
谢谢你的帮助!
我以前从未使用过 MKMapView 或 CoreLocation,所以我需要一些帮助。我想获得我当前的位置(可能在 mapView 中显示这个位置)并定期更新我的位置,并每次比较我的新位置和旧位置,看看我是否移动了。
这样的事情可能吗?我怎样才能做到这一点?我已经实现了一个 MKMapView。但是我不确定如何获得当前位置并进行比较以查看我是否正在移动...
谢谢你的帮助!
这很简单。设置showsUserLocation
为YES
,你就完成了。文档
为了使它更好一点,您可以在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
我实际上不确定是否仅在更改时才调用委托方法。在这种情况下,您不必将位置存储为属性并进行检查,只需实现委托方法并在那里做您的事情。