我希望有人可以为我指出一个方便的委托方法来回答以下问题。
我的问题是:我怎么知道用户第一次被 MapKit 定位?
当我的视图出现时,我会告诉我的 MKMapView 定位用户并设置用户周围的地图区域。在最初找到用户后,我不想继续将地图更新到他/她的位置。我想让用户自由地在地图上平移,而不是自动回到他们的位置。
当定位用户出现延迟时我遇到了麻烦(例如,用户第一次打开应用程序时,MapKit 在他/她同意分享他们的位置之前不会定位用户)。结果是地图在大西洋上空的某个地方打开,一旦找到用户,它就不会自行纠正。
不幸的是, -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 在确定用户的真实位置之前被调用了几次(测试时,我在同意分享我的位置之前看到了它的 NSLog 语句)。
- (void)viewDidLoad
{
[super viewDidLoad];
self.mapView.delegate=self;
}
-(void)viewWillAppear:(BOOL)animated{
[self.mapView setShowsUserLocation:YES];
[self.mapView setUserTrackingMode: MKUserTrackingModeNone];
hasUpdatedRegion=NO;
}
//MapKit Delegate Methods
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
NSLog(@"didUpdateUserLocation");
if(!hasUpdatedRegion)
{
hasUpdatedRegion=YES;
MKCoordinateSpan span=MKCoordinateSpanMake(0.3, 0.3);
MKCoordinateRegion currentRegion=MKCoordinateRegionMake(mapView.userLocation.coordinate, span);
[mapView setRegion:currentRegion];
}
}
-(void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated{
NSLog(@"didChangeTrackingMode");
}