Наложение MapView обрезается после увеличения

Я сталкиваюсь со странной проблемой MKMapView, Я использовал MKOverlayRenderer, Теперь проблема в том, когда я уменьшаю изображение, показывающее правильно. Но в случае увеличения, часть изображения обрезается. Это выглядит как часть 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:) Функция эта проблема была исправлена. Но это не мое решение, потому что изображение должно быть на своем месте.

уменьшить приблизить

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();
}
    }
Другие вопросы по тегам