Ios MKUserTrackingModeFollowWithHeading,缩放
我使用MKUserTrackingModeFollowWithHeading,以便地图跟随用户位置并旋转。问题是缩放级别没有粘住。这是我的密码Ios MKUserTrackingModeFollowWithHeading,缩放,ios,zooming,mapkit,tracking,Ios,Zooming,Mapkit,Tracking,我使用MKUserTrackingModeFollowWithHeading,以便地图跟随用户位置并旋转。问题是缩放级别没有粘住。这是我的密码 -(void) viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.locMapView.delegate = self; [self.locMapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading
-(void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.locMapView.delegate = self;
[self.locMapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:YES];
}
}
我也尝试在viewDidLoad中设置缩放级别,但运气不太好
当UserTrackingMode设置为MKUserTrackingModeFollowWithHeading时,如何使地图保持缩放级别?以下是我解决此问题的技巧:在放大/缩小之前设置mapView.UserTrackingMode=MKUserTrackingModeNone,然后设置=MKUserTrackingModeFollowWithHeading
@property (assign, nonatomic) MKUserTrackingMode lastTrackingMode;
- (IBAction)zoomInButtonPressed:(id)sender {
self.mapView.userTrackingMode = MKUserTrackingModeNone;
MKCoordinateRegion newRegion = MKCoordinateRegionMake(self.mapView.region.center,MKCoordinateSpanMake(self.mapView.region.span.latitudeDelta*0.5, self.mapView.region.span.longitudeDelta*0.5));
[self.mapView setRegion:newRegion];
self.mapView.userTrackingMode = self.lastTrackingMode;
}
- (IBAction)zoomOutButtonPressed:(id)sender {
self.mapView.userTrackingMode = MKUserTrackingModeNone;
// Zoom-out code goes here
self.mapView.userTrackingMode = self.lastTrackingMode;
}
与您的问题无关,但您不需要计算MKMapRect来设置地图显示的内容。使用mkcoordinaeregionmakewithdistance更容易,它直接采用坐标和米。它返回一个MKCoordinateRegion,您可以将其与setRegion一起使用,而不是调用setVisibleMapRect。感谢您指出这一点。
@property (assign, nonatomic) MKUserTrackingMode lastTrackingMode;
- (IBAction)zoomInButtonPressed:(id)sender {
self.mapView.userTrackingMode = MKUserTrackingModeNone;
MKCoordinateRegion newRegion = MKCoordinateRegionMake(self.mapView.region.center,MKCoordinateSpanMake(self.mapView.region.span.latitudeDelta*0.5, self.mapView.region.span.longitudeDelta*0.5));
[self.mapView setRegion:newRegion];
self.mapView.userTrackingMode = self.lastTrackingMode;
}
- (IBAction)zoomOutButtonPressed:(id)sender {
self.mapView.userTrackingMode = MKUserTrackingModeNone;
// Zoom-out code goes here
self.mapView.userTrackingMode = self.lastTrackingMode;
}