2014-10-01 103 views
1

我有MKMapView。我已經添加了MKOverlay,並將其渲染爲MKOverlayRenderer。當我啓動應用程序時,一切正常。但是,如果我打開其他全屏視圖並關閉它,則地圖消失並變爲灰色。我可以看到疊加層,但沒有地圖。如果我觸摸(移動)地圖,它就會變得可見。MKMapView - iOS8 MKOverlay - 地圖消失

我曾嘗試致電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上,一切工作正常。

回答

0

我找到了錯誤。

在我的代碼中,我每次都在更改地圖類型,我有刷新覆蓋。這一切都在一個方法。即使如果我已經設置了與前一個相同的地圖類型,它做了這個錯誤。

現在,我手動檢查,如果地圖已經改變了它的類型,只有如此,運行代碼。在地圖更改的情況下,它會閃爍,但會自動使用新地圖進行刷新。

我的代碼:

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; 
    } 

原來,不工作的版本,是沒有如果開關分支。