mkmapview中注释引脚的自定义图像

时间:2012-08-31 12:24:26

标签: objective-c

自定义注释引脚在长按时更改为默认红色引脚。

  - (MKAnnotationView *) mapView:(MKMapView *)mapingView viewForAnnotation:(id <MKAnnotation>) annotation {
 MKPinAnnotationView *annView = nil;
        if(annotation != mapingView.userLocation) 
        {

            static NSString *defaultPinID = kDEFAULTPINID;
            annView = (MKPinAnnotationView *)[mapingView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
            if ( annView == nil ) 
            annView = [[MKPinAnnotationView alloc]
                                             initWithAnnotation:annotation reuseIdentifier:defaultPinID] ;


            annView.canShowCallout = YES;
            annView.image = [UIImage imageNamed:@"icon.png"];//sets image for default pin

}
return annView;
}


- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKPinAnnotationView *)view 
    { 
        if ([[view.annotation title] isEqualToString:@"AnnotationTitle"] ) {

             view.image = [UIImage imageNamed:@"selected_IconImage.png"];
       }
    }

只需触摸注释引脚即可显示所选图像。 但是,长按此引脚自定义图像将恢复为默认红色引脚。

如何解决此问题?

1 个答案:

答案 0 :(得分:12)

使用MKAnnotationView代替MKPinAnnotationView,我猜测地图视图执行某种重置,然后返回默认图像(这是您看到的图像)