动画时,MKMapView setVisibleMapRect edgePadding会更改相机的方向

时间:2019-01-29 16:05:33

标签: objective-c mapkit mkmapview

我正在通过调整edgePadding使MKMapView动画化;但是,在执行动画时,会在动画过程中旋转地图,并且在动画过程中会丢失mapView的现有摄影机标题。

恢复标题并不理想;在动画过程中设置摄像机的方向会中断动画,并且不会执行动画;方向仍然存在,但偏移没有设置动画。

下面的代码片段具有使地图偏移动画化的效果,但是地图的标题被翻转了。动画完成后,我便修复了标题。

我希望地图视图标题保持原样,并且仅对偏移量进行动画处理 调整正在动画的MKMapView的插图时。

请协助

self.mapView.rotateEnabled = YES;
self.mapView.camera.heading = deg;

[MKMapView animateWithDuration:0.4 animations:^{
    // top, left, bottom, right
    self.mapView.layoutMargins = UIEdgeInsetsMake(y, 0, -y, 0);
    [self.mapView setVisibleMapRect:[self.mapView visibleMapRect]
                        edgePadding:UIEdgeInsetsMake(self.offset, 0.0, 0.0, 0.0)
                           animated:YES];
} completion:^(BOOL finished) {
    self.mapView.camera.heading = deg;
    self.mapView.rotateEnabled = NO;
}];

1 个答案:

答案 0 :(得分:0)

这是通过捕获MkMapViews当前相机的有效解决方案 并在动画过程中设置MKMapViews相机。

MKMapCamera *mapCamera = [[self.mapView camera] copy]; // the fix 1 of 2   
[UIView animateWithDuration:0.4 animations:^{
    // top, left, bottom, right
    self.mapView.layoutMargins = UIEdgeInsetsMake(y, 0, -y, 0);
    [self.mapView setVisibleMapRect:[self.mapView visibleMapRect]
                        edgePadding:UIEdgeInsetsMake(self.offset, 0.0, 0.0, 0.0)
                           animated:YES];
    [self.mapView setCamera:mapCamera]; // the fix 2 of 2
}];