РЕДАКТИРОВАТЬ:
Хорошо, поэтому я немного повозился с этим и смог собрать что-то, что, кажется, работает, надеясь, что теперь я действительно понимаю, чего вы пытаетесь достичь!
- (void)shiftToCorner{
//ignore "Annotation", this is just my own custom MKAnnotation subclass
Annotation *currentAnnotation = [[mapView selectedAnnotations] objectAtIndex:0];
[mapView setCenterCoordinate:currentAnnotation.coordinate];
CGPoint fakecenter = CGPointMake(20, 20);
CLLocationCoordinate2D coordinate = [mapView convertPoint:fakecenter toCoordinateFromView:mapView];
[mapView setCenterCoordinate:coordinate animated:YES];
}
Позвольте мне быстро объяснить, что это делает;Допустим, вы хотите, чтобы ваша аннотация переместилась в положение на 20 пунктов от правого края и на 20 пунктов вверх от нижнего края вида карты.Если подумать, если текущая аннотация находится в центре вида карты, то расстояние до этой точки равно расстоянию до (20, 20).Это означает, что мы можем отправить нашу аннотацию к этой точке, сначала центрируя наш вид карты на аннотации, затем анимируя к (20, 20).