I am aware of the delegate methods used to let me know when the map has loaded and annotations and overlays have been added. (mapViewDidFinishLoadingMap:
mapView:didAddAnnotationViews:
mapView:didAddOverlayViews:
)
I am wanting to create a UIImage
from my MKMapView
once everything has loaded. Currently I am creating my UIImage
once mapView:didAddOverlayViews:
is called, but this is not always reliable, because sometimes the overlay take longer to be added, sometimes mapViewDidFinishLoadingMap:
is called more than once or it takes a long time to load. Sometimes it is NOT called because tiles are cached. So, it is very hard to know exactly when everything has loaded. I have tried using a timer but that doesn't make it reliable either.
My question is, how can I know when everything has completely loaded, including all map tiles, all annotations and all overlays?
It's an old question, but if you're using iOS 7 just use the mapView mapViewDidFinishRenderingMap delegate.
- (void)mapViewDidFinishRenderingMap:(MKMapView *)mapView fullyRendered:(BOOL)fullyRendered
{
// Image creation code here
}