Переместить точку MKMapView в координаты пикселей - PullRequest
3 голосов
/ 15 августа 2011

У меня быстрый вопрос.Я использую пользовательский вид в качестве аксессуара выноски для моего вида картыУ меня возникли проблемы с перемещением аннотации в правый нижний угол указанного вида.В настоящее время я пытаюсь получить координаты CGPoint для выбранной аннотации, но помимо этого я нарисовал пустой. Любая помощь будет принята с благодарностью.

Текущий код, который я использую (я знаю, что он неверный:)

   CGPoint bottomLeftPoint = CGPointMake(xOffset,[self.internalAnnotationCallout view].frame.size.height);
CLLocationCoordinate2D bottomLeftCoord = [self.branchLocation convertPoint:bottomLeftPoint toCoordinateFromView:self.branchLocation];
MKCoordinateSpan span = {latitudeDelta: kMapMultiLatDelta, longitudeDelta: kMapMultiLatDelta};
  MKCoordinateRegion region = {bottomLeftCoord, span};
 [self.branchLocation setRegion:region animated:YES];
//[self.branchLocation setCenterCoordinate:newCenterCoordinate animated:YES];

1 Ответ

7 голосов
/ 15 августа 2011

РЕДАКТИРОВАТЬ:

Хорошо, поэтому я немного повозился с этим и смог собрать что-то, что, кажется, работает, надеясь, что теперь я действительно понимаю, чего вы пытаетесь достичь!

- (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).

...