Custom MKAnnotationView con marco, icono e image

He estado buscando una solución similar sobre cómo diseñar un MKAnnotationView personalizado como este.

introduzca la descripción de la imagen aquí

He subclasificado la MKAnnotation y pude agregar una image llamada F.png. F.png es una image de marco como se muestra en la image. Lo que quiero es agregar una image interna. (coloreado azul en la image que dibujo)

- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation { if ([annotation isKindOfClass:[MKUserLocation class]]) return nil; static NSString* AnnotationIdentifier = @"AnnotationIdentifier"; MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier]; if(annotationView) return annotationView; else { MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier]; annotationView.canShowCallout = YES; annotationView.image = [UIImage imageNamed:[NSString stringWithFormat:@"F.png"]]; UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [rightButton addTarget:self action:@selector(writeSomething:) forControlEvents:UIControlEventTouchUpInside]; [rightButton setTitle:annotation.title forState:UIControlStateNormal]; annotationView.rightCalloutAccessoryView = rightButton; annotationView.canShowCallout = YES; annotationView.draggable = NO; return annotationView; } return nil; } 

aqui en tu codigo

 else { MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier]; annotationView.canShowCallout = YES; //change here annotationView.image = [UIImage imageNamed:[NSString stringWithFormat:@"F.png"]]; UIImage *frame = [UIImage imageNamed:[NSString stringWithFormat:@"F.png"]; UIImage *image = theImageInFrameInner; UIGraphicsBeginImageContext(CGSizeMake(pin.size.width, pin.size.height)); [frame drawInRect:CGRectMake(0, 0, frame.size.width, frame.size.height)]; [image drawInRect:CGRectMake(2, 2, 60, 60)]; // the frame your inner image //maybe you should draw the left bottom icon here, //then set back the new image, done annotationView.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [rightButton addTarget:self action:@selector(writeSomething:) forControlEvents:UIControlEventTouchUpInside]; [rightButton setTitle:annotation.title forState:UIControlStateNormal]; annotationView.rightCalloutAccessoryView = rightButton; annotationView.canShowCallout = YES; annotationView.draggable = NO; return annotationView; } 
 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { static NSString *AnnotationViewID = @"annotationViewID"; MKAnnotationView *annotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID]; if (annotationView == nil) { annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID]; } UIImage *imgPinBorder = [UIImage imageNamed:@"pinBorder.png"]; UIImageView *imageViewPinBorder = [[UIImageView alloc] initWithImage:imgPinBorder]; imageViewPinBorder.center = annotationView.center; [annotationView addSubview:imageViewPinBorder]; UIImage *img = [UIImage imageNamed:@"myIcon.png"]; UIImageView *imageView = [[UIImageView alloc] initWithImage:img]; imageView.center = annotationView.center; [annotationView addSubview:imageView]; annotationView.annotation = annotation; UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [rightButton addTarget:self action:nil forControlEvents:UIControlEventTouchUpInside]; [rightButton setTitle:annotation.title forState:UIControlStateNormal]; annotationView.rightCalloutAccessoryView = rightButton; annotationView.canShowCallout = YES; annotationView.draggable = NO; return annotationView; }