views:

1102

answers:

3

I have an MKMapView that I am considering rotating in order to more conveniently display a series of Annotations to my users.

As of now I am planning on simply rotating the entire view with a CGAffineTransform, but I wanted to know if anyone had any experience with MKMapView rotation.

  • Are there any pitfalls or "gotchas" that you came across when adding rotation?
  • Is there an easier way to rotate a mapview?
  • If I have an overlay will the convertCoordinate:toPointToView: method still work the same way? I would assume that I'd have to apply the same transform to my overlay for the points to line up, but maybe the method is smarter than that.

If there's anything that you think could help out I'd love to hear it all.


Edit: After much experimentation I believe that I'll be using static maps that I can rotate and overlay myself, however, I would still be interested in any information about MKMapView rotation.

A: 

I started working with MKMapView rotations and have found that:

  • When you apple a CGAffineTransform to the map view the method convertCoordinate:toPointToView: works the same.
  • Annotations rotate with the view, including annotation text.
  • Region that fits still appears to fit to a region on the screen, it doesn't fit to the map view (I made my map view larger than its parent view so it could rotate without showing the view behind).
jessecurry
+3  A: 

I also plan to use rotated MKMapView in my application. To show annotations unrotated I use the following code:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
    ...
    annotationView.transform = GAffineTransformInvert(mapView.transform);
    ...
}

It seems to work for me.

Vladimir
Thanks for the info, I take it that the annotationView transform only affects rotation? That position is a function of some other transform?
jessecurry
+3  A: 

That's a fresh sample of MKMapView rotation with iPhone ccelerometer. Hope it'll help.

slatvick
thanks for the code, I'll take a look at it.
jessecurry