You can try something like this:
- (UIImage*) imageFromView:(UIView*)view rect:(CGRect)rect {
The imageFromView:rect: method simply captures the specified rectangular area within a given view and creates a UIImage .
The onButtonTapped method uses the first method to capture the area around the center of my map and display the captured image in the upper left corner of the screen. Of course, you can replace the center map with the coordinate of your pin, make the width and height of the area that you like, and put the resulting image in your pop-up window.
This is just a demonstration. I used the button in my example application, just to start capturing, after panning the map where I would like to do this.
results

Limitations
My code just displays a captured rectangle with a 1: 1 ratio. Of course, if you want, you can put the captured UIImage into a UIImageView , which scales it as you like. You can make the image bigger. But, if you do, you will lose sharpness. This process simply performs a UIView screen UIView . It does not work directly with map data, so when you explode it (display the image in a larger size), the image will not be sharpened, as with the actual zoom on MKMapView .
source share