2015-07-08 4 views
0

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

- (void) sourceMarker:(MKPlacemark *) homeLoc { 
MKAnnotationView *point = [[MKAnnotationView alloc] init]; 

MKPointAnnotation *ml = point.annotation; 

ml.coordinate = homeLoc.coordinate; 

ml.title = @"Home"; 

point.image = [UIImage imageNamed:@"home.png"]; 
point.canShowCallout = YES; 

[self.mapView addAnnotation:ml]; 
} 

ответ

1

Как полагает Apple, док Annotating Maps. Нужно создать пользовательский класс аннотаций, пожалуйста, обратитесь к следующему коду.

MyAnnotation.h

@interface MyAnnotation : NSObject<MKAnnotation> 
{ 
CLLocationCoordinate2D coordinate; 
NSString *title; 
NSString *subtitle; 
NSString *type; 

} 

@property (nonatomic, assign) CLLocationCoordinate2D coordinate; 
@property (nonatomic, copy) NSString *title; 
@property (nonatomic, copy) NSString *subtitle; 
@property (nonatomic, copy) NSString *type; 
@end 

MyAnnotation.m

@implementation MyAnnotation 
    @synthesize coordinate; 
    @synthesize title; 
    @synthesize subtitle; 
    @synthesize type; 

@end 

yourViewControll.m - Где вы показываете карту.

Создать аннотацию и установить свойство типа

MyAnnotation *Ann = [[MyAnnotation alloc] init]; 
offAnn.coordinate = offLocation.coordinate; 
offAnn.title = @"My Office"; 
offAnn.type = @"Office"; 
[_mapView removeAnnotation: offAnn]; 
[_mapView addAnnotation: offAnn]; 




- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
NSLog(@"viewForAnnotation Called"); 
if ([annotation isKindOfClass:[MyAnnotation class]]) 
{ 
    MyAnnotation *myAnn=(MyAnnotation *)annotation; 

    MKAnnotationView *pinView = (MKAnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:@"MyAnnotation"]; 
    if (!pinView) 
    { 
     pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"MyAnnotation"]; 
     //pinView.animatesDrop = YES; 
     pinView.canShowCallout = YES; 
     pinView.calloutOffset = CGPointMake(0, 4); 

    } else { 
     pinView.annotation = annotation; 
    } 
    if([myAnn.type isEqual: @"Office"]) { 
     pinView.image = [UIImage imageNamed:@"office.png"]; 
    } 
    return pinView; 
} 
return nil; 
} 
0
(MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation{ 
    static NSString *annotationViewID; 
    MKAnnotationView *annotationView; 
    annotationViewID = @"annotationViewID"; 
    annotationView = (MKAnnotationView *)[self dequeueReusableAnnotationViewWithIdentifier:annotationViewID]; 

    if (annotationView == nil) 
    { 
     annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationViewID] ; 
    } 

    annotationView.image = [UIImage imageNamed:@"patientpin_l.png"];  
    // Add annotation image here   
    annotationView.annotation = annotation; 
    return annotationView; 

} 
Смежные вопросы