MKMapView - iOS8 MKOverlay - 地图消失

时间:2014-10-01 06:40:48

标签: mkmapview ios8 mkoverlay

我有MKMapView。我已添加MKOverlay,并使用MKOverlayRenderer呈现它。当我开始申请时,一切都很好。但是如果我打开其他全屏幕视图并关闭它,地图就会消失并变成灰色。我可以看到叠加层,但没有地图。如果我触摸(移动)地图,它就会变得可见。

我尝试过调用setNeedsDisplaysetRegion,但没有人工作过。

如果我从地图中删除叠加层,则不会出现此问题。

在叠加渲染器中渲染叠加层的代码。

MKMapRect theMapRect = self.overlay.boundingMapRect;
CGRect theRect = [self rectForMapRect:theMapRect];

CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0.0, -theRect.size.height);    
CGContextDrawImage(context, theRect, imageReference);

PS:在iOS7上,一切正常。

1 个答案:

答案 0 :(得分:0)

我找到了错误。

在我的代码中,我每次都在更改地图类型,我有清爽的叠加层。这是一种方法。即使我已经设置了与前一个相同的地图类型,它也会犯这个错误。

现在,我手动检查,如果map已更改其类型,并且只有这样,运行代码。如果地图发生变化,它会闪烁,但会使用新地图自动刷新。

我的代码:

    switch(myAppSettings.mapType)
    {
        case 0:
            if (self.mapView.mapType != MKMapTypeStandard)
                self.mapView.mapType = MKMapTypeStandard;
            break;
        case 1:
            if (self.mapView.mapType != MKMapTypeSatellite)
                self.mapView.mapType = MKMapTypeSatellite;
            break;
        case 2:
            if (self.mapView.mapType != MKMapTypeHybrid)
                self.mapView.mapType = MKMapTypeHybrid;
            break;
        default:
            if (self.mapView.mapType != MKMapTypeStandard)
                self.mapView.mapType = MKMapTypeStandard;
            break;
    }

原创,不工作的版本,如果在分支中没有分支。