我有MKMapView
。我已添加MKOverlay
,并使用MKOverlayRenderer
呈现它。当我开始申请时,一切都很好。但是如果我打开其他全屏幕视图并关闭它,地图就会消失并变成灰色。我可以看到叠加层,但没有地图。如果我触摸(移动)地图,它就会变得可见。
我尝试过调用setNeedsDisplay
,setRegion
,但没有人工作过。
如果我从地图中删除叠加层,则不会出现此问题。
在叠加渲染器中渲染叠加层的代码。
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上,一切正常。
答案 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;
}
原创,不工作的版本,如果在分支中没有分支。