Поворот только содержимого MapView - PullRequest
1 голос
/ 28 февраля 2010

Я пытаюсь повернуть вид карты в моем приложении в соответствии с текущим маршрутом пользователя. (Я не люблю использовать встроенный компас, потому что он используется только в 3GS, и он слишком страдает от помех от других машин, т. Е. Вашей собственной машины.).

метод CGAffineTransformMakeRotation будет вращать представление всей карты, поэтому логотип Google больше не будет находиться в правом нижнем углу экрана. Кроме того, все аннотации будут вращаться и выглядеть странно в приложении.

Кто-нибудь знает, как вращать только содержимое (улицы) MkMapView?

Спасибо

1 Ответ

2 голосов
/ 11 марта 2010

Вот как я вращаю MapView (см. Поворот MapView с использованием ориентации компаса ):

[self.mapView setTransform:CGAffineTransformMakeRotation(-1 * currentHeading.magneticHeading * 3.14159 / 180)];

Затем, чтобы сохранить ориентацию аннотаций в верхней частиустройство:

for (MKAnnotation *annotation in self.mapView.annotations) {
     MKAnnotationView *annotationView = [self.mapView viewForAnnotation:annotation]; 
     [annotationView setTransform:CGAffineTransformMakeRotation(currentHeading.magneticHeading * 3.14159 / 180)];
}

Если вы хотите, чтобы точка поворота аннотационных видов была, скажем, центром снизу, я полагаю, что вы установите точку привязки каждого вида следующим образом:

  annotationView.layer.anchorPoint = CGPointMake(0.5, 1.0);

I 'У меня все еще есть некоторые проблемы с изменением позиции annotationView, когда я делаю это (хотя, вероятно, та же проблема, что и в вопросе stackoverflow: change-my-calayers-anchorpoint-move-the-view).

...