Hi all,Took a little bit of sleuthing and reading up of Apple's documentation, but I did in the end manage to get rid of those pesky "grid lines". They're doubtless tile boundaries that aren't being drawn to the graphics context in the same way as to the screen. To me it smacked of some rounding during rendering, or anti-aliasing.Sure enough, to get rid of them you need to add this line:CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), NO);
However, you will notice if you're using a retina display, that the captured image is different to the on-screen one. To fix that, you need to begin the Image Context with some options other than the defaults adopted by UIGraphicsBeginImageContext().This is some serious Apple silliness, but at least the documentation is there to guide you. So, use the following:UIGraphicsBeginImageContextWithOptions(self.mapView.frame.size, NO, 0.0f);
By specifying a scale of 0.0f, you are telling the renderer to use the device's main display's resolution. On a retina display, you'd get the same effect if you used 2.0f, but 0.0f will work on any device.You might also get away with YES instead of NO for the opaque parameter if you know enough about the layers you're rendering etc. etc..So, the final code looks something like this:UIGraphicsBeginImageContextWithOptions(self.mapView.frame.size, NO, 0.0f);
CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), NO);
[self.mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//save image to photo album
UIImageWriteToSavedPhotosAlbum(screenshot,self,@selector(image:didFinishSavingWithError:contextInfo:),nil);
Hope this helps!By the way, I still haven't got this to work in the simulator. Rick - do you remember how you got that to work?Nick.