iOS MapKit Изменение mapview типа карты приводит к смене изображения аннотации на булавку? - PullRequest
9 голосов
/ 01 марта 2011

Будем благодарны за любые предложения о том, что не так со следующим.

Я добавляю пользовательское изображение в аннотацию, используя следующий код.

- (MKAnnotationView *)mapView:(MKMapView *)mapView 
            viewForAnnotation:(id <MKAnnotation>)annotation
{
    if ([annotation isMemberOfClass:[MKUserLocation class]]) 
    { 
        return nil; 
    } 


    if ([annotation isMemberOfClass:[SpectatorPin class]]) 
    { 
        SpectatorPin *sp = (SpectatorPin *)annotation;
        MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"];
        if (view == nil) {
            view = [[[MKPinAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease];
        }
        view.image = [UIImage imageNamed:@"mylocation20x20.png"]; 
        view.canShowCallout = YES;
        view.annotation=annotation;
        return view;
    }

    //Should not get here
    return nil;

}

Первоначально изображение отображается правильно.

У меня есть сегментный элемент управления, который меняет тип карты (стандартная, спутниковая, гибридная).Стандарт по умолчанию.Как только я выбираю спутник, изображение сразу меняется на булавку.Метод mapView: viewforAnnotation больше не вызывается.

С уважением,

Джим

Ответы [ 3 ]

24 голосов
/ 24 июня 2011

Для пользовательского изображения вы можете использовать MKAnnotationView вместо MKPinAnnotationView.

MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"];
        if (view == nil) {
            view = [[[MKAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease];
        }
1 голос
/ 09 января 2015

Попробуйте это:

MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"];
        if (view == nil) {
            view = [[[MKAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease];
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...