I know this was two years ago so you probably found a workaround by now, but I just came across this and figured out a hack to make it work.
// Manually set the bounds to be larger than 28x28.
// 80 is an arbitrary number to prevent clipping.
annotationView.bounds = CGRect(
x: self.point(for: location.coordinate).x,
y: self.point(for: location.coordinate).y,
width: 80,
height: 80
)
// Use the bounds (not the frame) with setting the rect to draw in
let rect = CGRect(
x: self.point(for: location.coordinate).x,
y: self.point(for: location.coordinate).y,
width: annotationView.bounds.width,
height: annotationView.bounds.height
)
For me, this has fixed the problem. I'm not completely comfortable with having to use 80 as an arbitrary value – it feels like it could break in the future – but it'll do for now.