Как повернуть MKMapView и сохранить аннотацию и вид не вращается? - PullRequest
3 голосов
/ 12 августа 2011

Я делаю MKMapView, который показывает текущее местоположение пользователя.Я хочу вращать карту, как приложение Google Maps, не поворачивая аннотации.Я использую следующий код

-(void) locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading{
     mapView.transform=CGAffineTransformMakeRotation(-1*newHeading.magneticHeading*3.14159/180)};

, но весь вид поворачивается, как это изображение. Изображение проблемы в моем приложении

Ответы [ 2 ]

8 голосов
/ 15 августа 2011

В основном вам необходимо применить одно и то же преобразование ко всем видам аннотаций, но с отрицательным углом, т. Е.

for (id<MKAnnotation> annotation in mapView.annotations) 
{
    MKAnnotationView* annotationView = [mapView viewForAnnotation:annotation];
    [annotationView setTransform:CGAffineTransformMakeRotation(-angle)];
}

Если вы планируете добавить больше аннотаций, вы должны поместить тот же код и в mapView:didAddAnnotationViews::

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    for (MKAnnotationView* annotationView in views) 
    {
        [annotationView setTransform:CGAffineTransformMakeRotation(-angle)];
    }
}
0 голосов
/ 12 августа 2011

Все аннотации и выноски, отображаемые в MKMapView, являются подпредставлениями MKMapView, поэтому, если вы поворачиваете представление контейнера, все его подпредставления также будут вращаться.

...