Post not yet marked as solved
Post marked as unsolved with 0 replies, 815 views
Hi I need Help I do control Apple Map
I want overlay image on map
I use MKOverlayRenderer and this function override func draw(_ mapRect: MKMapRect, zoomScale: MKZoomScale, in context: CGContext)
and then success overlay
but map zoom level 2.0 over than image broken
if not use CGContext.rotate then image are not broken but use rotate then image are broken
class IndoorInfoOverlay: NSObject, MKOverlay {
let coordinate: CLLocationCoordinate2D
let boundingMapRect: MKMapRect
init(indoorInfo: IndoorInfo) {
boundingMapRect = indoorInfo.overlayBoundingMapRect
coordinate = indoorInfo.midCoordinate
}
}
class IndoorInfoOverlayView: MKOverlayRenderer {
var overlayImage: UIImage
var parent: IndoorMapView
init(overlay: MKOverlay, overlayImage: UIImage,_ parent: IndoorMapView) {
self.overlayImage = overlayImage
self.parent = parent
super.init(overlay: overlay)
}
override func draw(_ mapRect: MKMapRect, zoomScale: MKZoomScale, in context: CGContext) {
guard let imageReference = overlayImage.cgImage else { return }
let bearing = degreesToRadians(360 - (Double(self.parent.floorData!.FLOOR_BEARING) ?? 0))
let rect = self.rect(for: overlay.boundingMapRect)
context.scaleBy(x: 1.0, y: -1.0)
context.translateBy(x: 0.0, y: -rect.size.height)
if self.parent.floorData != nil {
context.rotate(by: bearing)
}
context.draw(imageReference, in: rect, byTiling: false)
}
private func degreesToRadians(_ x:Double) -> Double {
return (Double.pi * x / 180.0)
}
}````