Подтвердить что ты не робот

Программный поворот MKMapView в iOS7

У меня есть приложение, которое в настоящее время использует CGAffineTransformMakeRotation для управления MKMapView, чтобы отобразить карту с правильной ориентацией и размером. С выпуском iOS7 этот метод стал ненадежным (центр карты продолжает перемещаться). Я надеюсь решить это с более надежным решением.

Есть ли способ повернуть карту в коде без использования CGAffineTransformMakeRotation?

Я посмотрел на MKMapCamera в надежде, что смогу манипулировать им, передавая значения staic, чтобы манипулировать картой, но нет способа вручную установить centerCoordinate и eyeCoordinate.

4b9b3361

Ответ 1

Вы можете повернуть и отбросить карту, установив новый MKMapCamera с помощью -setCamera:animated:.

Чтобы установить вращение, дайте ему новый параметр heading:

- (void)viewDidAppear:(BOOL)animated // or wherever works for you
{
    [super viewDidAppear:animated];

    if ([mapView respondsToSelector:@selector(camera)]) {
        MKMapCamera *newCamera = [[mapView camera] copy];
        [newCamera setHeading:90.0]; // or newCamera.heading + 90.0 % 360.0
        [mapView setCamera:newCamera animated:YES];
    }
}

Вы также можете сделать более привлекательный зум с изменением высоты тона и высоты, отображая здания:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    if ([mapView respondsToSelector:@selector(camera)]) {
        [mapView setShowsBuildings:YES];
        MKMapCamera *newCamera = [[mapView camera] copy];
        [newCamera setPitch:45.0];
        [newCamera setHeading:90.0];
        [newCamera setAltitude:500.0];
        [mapView setCamera:newCamera animated:YES];
    }

}