在mkMapview中显示注释的不同图像

时间:2014-04-11 09:50:52

标签: ios mkmapview

根据我不同的枚举值,我需要在mapview中显示不同的图像。 我怎么能这样做?我是iOS开发的新手。请有人帮助我。

1 个答案:

答案 0 :(得分:1)

您需要在视图控制器中使用“ViewForAnnotation”委托方法。

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation
{
    if( [annotation isKindOfClass:[Annotation class] ] )
    {

        static NSString * AnnotationID = @"Annotation";

        Annotation * pannotation = (Annotation *)annotation;
        //if( pannotation == nil ) return nil;

        MKAnnotationView *annotationView = nil;

        annotationView = [self.mMapView  dequeueReusableAnnotationViewWithIdentifier:AnnotationID];
        if( annotationView == nil )
        {           
            annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation
                                                              reuseIdentifier:AnnotationID] autorelease];

        }   


    UIImage * flagImage = nil;

    if(Your enum Values)
    flagImage = [UIImage imageNamed:@"darkgreendot.png"];
    else if(....)
    flagImage = [UIImage imageNamed:@"orangedot.png"];
    else
    flagImage = [UIImage imageNamed:@"bluedot.png"];

    CGRect resizeRect;  
    resizeRect.size = flagImage.size;   
    resizeRect.origin = (CGPoint){0.0f, 0.0f};
    UIGraphicsBeginImageContext(resizeRect.size);
    [flagImage drawInRect:resizeRect];
    UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();    
    annotationView.image = resizedImage;

    return annotationView;
    }
  }

希望这会对你有所帮助。