2012-08-23 63 views
0

我已经成功地获得了用户位置的点击事件显示的标题,但是我无法让它为我自己的自定义注释工作。我已经尝试设置标题,但它明确,但这不起作用,我怎么能做到这一点?标题未在MKMapView中显示注释

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 
    MKPinAnnotationView *userMarkerView = nil; 
    PayMarkerAnnotationView *payMarkerView = nil; 

    if(annotation != mapView.userLocation) 
    { 
     payMarkerView = (PayMarkerAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"markerView"]; 
     if(payMarkerView == nil) { 
      payMarkerView = [[PayMarkerAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"markerView"]; 
     } 

     payMarkerView.annotation = annotation; 
     return payMarkerView; 
    } 
    else { 
     [mapView.userLocation setTitle:@"You are here"]; 
     return userMarkerView; 
    } 
} 

类:

@interface PaymentMarker : NSObject <MKAnnotation> { 
    NSString* type; 
    NSString* address; 
    float latitude; 
    float longitude; 
    NSString* title; 
} 


@property (nonatomic, copy) NSString* address; 
@property (nonatomic, copy) NSString* type; 
@property (nonatomic) float latitude; 
@property (nonatomic) float longitude; 
@property (nonatomic, copy) NSString* title; 

//MKAnnotation 
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 

@end 



- (id)initWithAnnotation:(id <MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier { 
    if(self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier]) { 
     self.backgroundColor = [UIColor clearColor]; 
     NSString* imageName; 

     if ([annotation isMemberOfClass:[PaymentMarker class]]) 
     { 
      PaymentMarker *pm = (PaymentMarker *)self.annotation; 
      if([pm.type isEqualToString:@"nzpost"]) { 
       imageName = @"icon-map-post.png"; 
      } else { 
       imageName = @"icon-map-incharge.png"; 
      } 

      self.image = [UIImage imageNamed:imageName]; 
     } 
    } 
    return self; 
} 

回答

2

您需要注解视图的canShowCallout属性设置为YES

您可以在initWithAnnotation方法做到这一点,if块中:再次

self.canShowCallout = YES; 

self.backgroundColor = ... 
+0

感谢安娜,希望我能告诉你它是如何寻找,寻找伟大的! – Baconbeastnz