Настраиваемая аннотация изображения в iOS - PullRequest
6 голосов
/ 30 мая 2011

Я пытаюсь заменить типичную "булавку" для карты iOS определенным изображением.Я новичок в кодировании, поэтому я не уверен точно, почему это не работает, но вот что я пытался:

для метода

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{

, который у меня есть,кроме всего прочего, это:

pinView.animatesDrop=YES;
pinView.canShowCallout=YES;
//pinView.pinColor=MKPinAnnotationColorPurple;
UIImage *pinImage = [UIImage imageNamed:@"Jeff.png"];
[pinView setImage:pinImage];

Однако, хотя код компилируется нормально, pinView не устанавливает pinImage.Есть идеи почему бы и нет?

Ответы [ 5 ]

3 голосов
/ 11 февраля 2012

изображение должно быть установлено в кнопке вместо annView, я использую так:

UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[button setImage:[UIUtils getStyleImage:@"page_map_accessory_button.png"] forState:UIControlStateNormal];
[button setImage:[UIUtils getStyleImage:@"page_map_accessory_button.png"] forState:UIControlStateSelected];
[button setImage:[UIUtils getStyleImage:@"page_map_accessory_button.png"] forState:UIControlStateHighlighted];
pinView.rightCalloutAccessoryView = button;
3 голосов
/ 15 июня 2011

все, что вам нужно сделать, это изменить последнюю строку на:

[pinView addSubview:pinImage];

полный пример:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{

    MKPinAnnotationView *annView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"ParkingPin"];

    UIImageView *imageView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pin_parking.png"]] autorelease];

    annView.animatesDrop = TRUE;
    annView.canShowCallout = YES;
    annView.calloutOffset = CGPointMake(-5, 5);
    [annView addSubview:imageView];
    return annView;
}

надеюсь, это поможет!

2 голосов
/ 23 октября 2012

Ответ, который я не вижу здесь, заключается в том, что вы должны удалить из очереди или создать MKAnnotationView в методе viewForAnnotation, а также иметь свой класс в качестве делегата представления карты, чтобы он вызывал этот метод для получения представления.

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

1 голос
/ 10 мая 2013

Просто удалите строку «animatesDrop» из своего кода.Это будет работать для вас.

0 голосов
/ 09 июня 2012

Просто сделай:

annView.image=[UIImage imageNamed:@"imagename.png"];
...