2017-02-09 10 views
8

У меня возникла странная проблема с MKMapView. Я использовал MKOverlayRenderer. Теперь проблема заключается в том, что я правильно масштабирую изображение. Но в случае увеличения масштаба часть части изображения отключается. Он выглядит как часть MapView идет над наложением. Ниже приведен мой код визуализации наложения.Наложение MapView отключается после увеличения

class MapOverlayRenderer: MKOverlayRenderer { 
    var overlayImage: UIImage 
    var plan: Plan 

    init(overlay: MKOverlay, overlayImage: UIImage, plan: Plan) { 
     self.overlayImage = overlayImage 
     self.plan = plan 
     super.init(overlay: overlay) 
    } 

    override func draw(_ mapRect: MKMapRect, zoomScale: MKZoomScale, in ctx: CGContext) { 
     let theMapRect = overlay.boundingMapRect 
     let theRect = rect(for: theMapRect) 

     // Rotate around top left corner 
     ctx.rotate(by: CGFloat(degreesToRadians(plan.bearing))); 

     // Draw the image 
     UIGraphicsPushContext(ctx) 
     overlayImage.draw(in: theRect, blendMode: CGBlendMode.normal, alpha: 1.0) 
     UIGraphicsPopContext(); 
    } 

    func degreesToRadians(_ x:Double) -> Double { 
     return (M_PI * x/180.0) 
    } 
} 

Хотя я не знаю истинную причину, но когда я комментирую ctx.rotate(by:) функция эта проблема была исправлена. Но это не мое решение, потому что изображение должно быть на месте.

zoom out zoom in

+0

Вы пытаетесь поместить код масштабирования в очередь отправки? –

+0

не работает !!!!! –

+0

Я все еще сражаюсь ... может кто-нибудь мне помочь? –

ответ

-1

Пожалуйста, попробуйте ниже.

override func draw(_ mapRect: MKMapRect, zoomScale: MKZoomScale, in ctx: CGContext) { 
DispatchQueue.main.async { 
     let theMapRect = overlay.boundingMapRect 
     let theRect = rect(for: theMapRect) 
     // Rotate around top left corner 
     ctx.rotate(by: CGFloat(degreesToRadians(plan.bearing))); 
     // Draw the image 
     UIGraphicsPushContext(ctx) 
     overlayImage.draw(in: theRect, blendMode: CGBlendMode.normal, alpha: 1.0) 
     UIGraphicsPopContext(); 
} 
    } 
+0

не работает !!!!! –