2017-02-09 22 views
8

yakınlaştırdıktan sonra kesiliyor MKMapView ile ilgili garip bir soruna yanıt veriyorum. MKOverlayRenderer kullandım. Sorun şu ki, doğru şekilde görüntüyü uzaklaştırırken. Ancak yakınlaştırma durumunda, görüntünün bir kısmı kesiliyor. MapView'un bir kısmı bindirmenin üstüne geliyor gibi görünüyor. Aşağıda, yer paylaşımlı işleyici kodum var.MapView yerleşimi

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

Ben gerçek nedenini bilmiyorum ama ctx.rotate(by:) fonksiyonunu yorumlama am bu sorun giderildi olsa. Ama bu benim çözümüm değil, imajın yerinde olması gerekiyor.

zoom out zoom in

+0

Yakınlaştırma kodunuzu Dispatch Queue içine koyarak denediniz mi? –

+0

çalışmıyor! –

+0

Hala dövüşüyorum ... kimse bana yardım edebilir mi? –

cevap

-1

aşağıda deneyin lütfen.

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

çalışmıyor! –