我在委托中有以下代码:
- (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id <MKAnnotation>)anAnnotation
{
MKPinAnnotationView *pin = (MKPinAnnotationView *) [map dequeueReusableAnnotationViewWithIdentifier: @"RoutePin"];
if (pin == nil)
{
if ([anAnnotation isKindOfClass:[RouteMapAnnotation class]])
{
RouteMapAnnotation *theAnnotation = (RouteMapAnnotation *)anAnnotation;
if (theAnnotation.identifier == @"routePin")
{
//NSLog(@"TESTING PART III");
MKPinAnnotationView *startAnnotationPin = [[MKPinAnnotationView alloc] initWithAnnotation:anAnnotation reuseIdentifier:@"RoutePin"];
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
startAnnotationPin.canShowCallout = YES;
startAnnotationPin.animatesDrop = YES;
startAnnotationPin.rightCalloutAccessoryView = rightButton;
startAnnotationPin.pinColor = MKPinAnnotationColorRed;
return startAnnotationPin;
}
else if (theAnnotation.identifier == @"finishPin")
{
NSLog(@"CREATING FINISH FLAG PRIOR");
MKPinAnnotationView *finishAnnotationPin = [[MKPinAnnotationView alloc] initWithAnnotation:anAnnotation reuseIdentifier:@"FinishPin"];
finishAnnotationPin.canShowCallout = NO;
finishAnnotationPin.animatesDrop = YES;
//finishAnnotationPin.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://cdn4.iconfinder.com/data/icons/formula1/f1_png/128/checkered_flag.png"]]];
finishAnnotationPin.image = [UIImage imageNamed:@"flag_finish"];
return finishAnnotationPin;
}
}
}
return nil;
}
然而,它没有显示地图上图钉的图像。我错过了什么?
答案 0 :(得分:1)
您应该使用MKAnnotationView而不是MKPinAnnotationView。
引脚注释用于引脚。
答案 1 :(得分:0)
另请注意,MKPinAnnotationView确实为常规MKAnnotationView提供了一些附加功能,例如拖动动画和3d阴影效果。如果您使用MKAnnotationView,则不会获得这些。
如果您需要这些内置功能,可以创建UIImageView并将其作为子视图添加到MKPinAnnotationView。这会给你一个看起来像你想要的注释;但表现得像一个别针。我用它来用我自己的图像替换别针的头部。