MKMapView setVisibleMapRect edgePadding меняет направление камеры при анимации - PullRequest
0 голосов
/ 29 января 2019

Я анимирую MKMapView, регулируя edgePadding;однако при выполнении анимации карта поворачивается во время анимации , и существующий заголовок камеры 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 голосов
/ 29 января 2019

Вот рабочее решение для захвата текущей камеры 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
}];
...