Size image pin annotation
There is not a maximum size of the pin image. You need to resize UIImage.
let annotationIdentifier = "SomeCustomIdentifier"
var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: annotationIdentifier)
if annotationView == nil {
annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier)
annotationView?.canShowCallout = true
// Resize image
let pinImage = UIImage(named: "pin maps.png")
let size = CGSize(width: 50, height: 50)
UIGraphicsBeginImageContext(size)
pinImage!.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
annotationView?.image = resizedImage
let rightButton: AnyObject! = UIButton(type: UIButtonType.detailDisclosure)
annotationView?.rightCalloutAccessoryView = rightButton as? UIView
}
else {
annotationView?.annotation = annotation
}
I know there is an accepted answer already, but it did not work for me. Kosuke Ogawa is correct that there is no maximum size and you must instead do some resizing. However, I found that modifying the Frame on the MKAnnotationView produces better results.
Kiko Lobo commented the solution that worked best for me, so all credit to him.
Instead of doing anything with the UIImage, you only need to edit the MKAnnotationView. Kibo Lobo's comment:
annotationView?.frame.size = CGSize(width: 30, height: 40)
I actually did this in C# with Xamarin, that looks like this:
annotationView.Frame = new CGRect(0,0,30,40);
The accepted answer had no effect when implemented in Xamarin. Hope this helps anyone else encountering image scaling issues. The UIImage.Scale() method made the image very fuzzy, while modifying the Frame kept the quality the same.