Ваш UIAnnotationView
всегда рисуется в одном и том же масштабе, уровень масштабирования карты не имеет значения. Вот почему centerOffset
не привязан к уровню масштабирования.
annView.centerOffset
это то, что вам нужно. Если вы видите, что ваш вывод находится не в хорошем месте (например, нижний центр немного смещается при изменении уровня масштабирования), это потому, что вы не установили правильный centerOffset.
Кстати, если вы хотите установить точку координаты в нижнем центре изображения, координата x вашего centerOffset должна быть 0,0f, так как annotationView центрирует изображение по умолчанию. Так что попробуйте:
annView.centerOffset = CGPointMake(0, -imageHeight / 2);