Your UIAnnotationView always drawn at the same scale, the zoom level of the map does not matter. Therefore, centerOffset not related to the zoom level.
annView.centerOffset is what you need. If you see that your contact is not in a good place (for example, the lower center moves a little when the zoom level changes), this is because you did not set the correct centerOffset .
By the way, if you want to set the coordinate point at the bottom of the image, the x coordinate of your centerOffset should be 0.0f, since annotationView creates a default image by default. So try:
annView.centerOffset = CGPointMake(0, -imageHeight / 2);
From [ MKAnnotation image offset with custom pin image
VICTORGS3
source share