iOS:加载MKMapView并添加注释/叠加层时的通知?

Nic*_*ard 21 cocoa-touch objective-c mapkit mkmapview ios

我知道用于在加载地图并添加注释和叠加层时让我知道的委托方法.(mapViewDidFinishLoadingMap: mapView:didAddAnnotationViews: mapView:didAddOverlayViews:)

我想要创建一个UIImage从我的MKMapView东西一切都已加载.目前我正在创建我的UIImage曾经mapView:didAddOverlayViews:被调用,但这并不总是可靠的,因为有时叠加需要更长的时间来添加,有时mapViewDidFinishLoadingMap:被调用不止一次或者需要很长时间才能加载.有时它不会被调用因为缓存了瓷砖.因此,很难确切知道什么时候加载了.我尝试过使用计时器,但这也不能让它变得可靠.

我的问题是,我怎么知道什么时候一切都已完全加载,包括所有地图图块,所有注释和所有叠加?

Pet*_*odd 22

这是一个老问题,但如果您使用iOS 7,只需使用mapView mapViewDidFinishRenderingMap委托.

- (void)mapViewDidFinishRenderingMap:(MKMapView *)mapView fullyRendered:(BOOL)fullyRendered
{
    // Image creation code here

}
Run Code Online (Sandbox Code Playgroud)

  • 仅在已渲染地图图块且不包含注释时才会触发此图像. (3认同)

小智 5

以下代码适用于 Swift 1.2 中的 iOS 8.4

func mapViewDidFinishRenderingMap(mapView: MKMapView!, fullyRendered: Bool) {
    // Your code on rednering completion
}
Run Code Online (Sandbox Code Playgroud)