Ios 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

我使用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;
}