首页 > 解决方案 > MKMapview 如何检查(探测)地图是否已加载?

问题描述

如何检查地图是否已加载到 MKKapview 中?我的意思是......要求地图视图准备好 - 而不是等待通知mapViewDidFinishLoadingMap:它不会通知它是否已经缓冲?

我用于更好地理解问题的用例:我的应用程序应该使用 MKMapview打印在后台创建的地图。加载地图可能需要一段时间,因此如果不检查准备情况,地图将不完整。这可以在预览中清楚地看到。第一次使用mapViewDidFinishLoadingMap:帮助。但是,如果我只是用稍微不同的区域再次打印,我将不会收到通知。

这是我的代码片段

-(IBAction)print:(id)sender {
    [self prepareClonedMap];
}

-(void) prepareClonedMap {
        [self cloneMap:scaling];
        // I would like here ...  if ( mapIsReady ) [self executePrint];
}

-(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView {
      [self executePrint];
}

-(void)executePrint {
   // make MKMapSnapshot
   // create printoperation
   .....
}

-(void)cloneMap:(CGFloat) factor {
    NSRect myframe;
    // expand to max factor

    myframe=mapView.frame;
    myframe.size.height = myframe.size.height * factor,
    myframe.size.width  = myframe.size.width  * factor;

    // reduce to max dimensions
    myframe.size = [self maxDimensionWithRatio:myframe.size];
    [cloneView setFrame:myframe];
    [cloneView setRegion:[mapView region]];
}

标签: objective-cmacosmkmapview

解决方案


推荐阅读