проблема с пользовательским расположением контактов iPhone - PullRequest
7 голосов
/ 12 июня 2011

У меня есть приложение, которое использует набор карт iphone. Он показывает набор стандартных выводов. Теперь я переключаюсь на пользовательские изображения для булавок (используя MKMapViewDelegate)

Проблема заключается в том, что пользовательские контакты не отцентрированы вправо - пользовательские контакты указывают на местоположение рядом с оригиналом.

Вопрос в том, как iphone работает с кастомным пин-кодом. Например: давайте получим изображение для булавки 50x50 пикселей. И у нас есть глобальная координата (long, lat): XY

Как iphone будет центрировать изображение?

спасибо

Ответы [ 2 ]

9 голосов
/ 12 июня 2011

Если вы назначите свое собственное изображение свойству изображения. Когда отображается аннотация, изображение отображается по центру относительно координаты целевой карты. Если вы не хотите, чтобы изображение центрировалось по координате карты, вы можете использовать свойство centerOffset для перемещения центральной точки по горизонтали и вертикали в любом направлении.

Таким образом, пользовательское изображение отображается только в центре ваших целевых координат.

MKAnnotationView* aView = [[[MKAnnotationView alloc] initWithAnnotation:annotation

                                  reuseIdentifier:@"MyCustomAnnotation"] autorelease];

aView.image = [UIImage imageNamed:@"myimage.png"];

aView.centerOffset = CGPointMake(10, -20);     

Источник: ссылка на класс Apple для MKMapView

6 голосов
/ 11 октября 2011

Решение состоит в том, чтобы установить смещение центра в делегате mapView, а не в представлении аннотации само по себе:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    static NSString* const kPinIdentifier = @"pinidentifier";

    PinAnnotationView* customPinView = [[[PinAnnotationView alloc]
                                           initWithAnnotation:annotation reuseIdentifier:kPinIdentifier] autorelease];
    customPinView.canShowCallout = NO;

    // Here !!
    customPinView.centerOffset = CGPointMake(0, -21.5f);

    return customPinView;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...