自定义注释未显示全部

时间:2011-01-17 08:11:55

标签: iphone xcode annotations mapkit

好的,我在mapkit上有很多针脚。这些针脚显示不同类型的景点。 (例如公园,农场等)

我想为这些不同类型的引脚添加自定义图像。公园有公园形象,反之亦然。

然而,当我加入时,并非所有图像都显示成功。例如,在公园中,它应该有5个引脚,但图像只出现在2个引脚中,而其他3个出现在默认的红色引脚中。

但如果我用颜色来区分它们。 例如,[pinsetPinColor:MKPinAnnotationColorGreen];

有效!谁知道问题是什么?

以下相关代码。告诉我你是否需要更多。谢谢!

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
if ([annotation isKindOfClass:MKUserLocation.class]) {
    //user location view is being requested,
    //return nil so it uses the default which is a blue dot...
    return nil;
}

//NSLog(@"View for Annotation is called");
MKPinAnnotationView *pin=[[MKPinAnnotationView alloc] 
                          initWithAnnotation:annotation reuseIdentifier:nil];

pin.userInteractionEnabled=TRUE;

MapEvent* event = (MapEvent*)annotation;    
NSLog(@"thetype: %@", event.thetype);


if ([event.thetype isEqualToString:@"adv"]) {
    //[pin setPinColor:MKPinAnnotationColorGreen];
    pin.image = [UIImage imageNamed:@"padv.png"];
}

else if ([event.thetype isEqualToString:@"muse"]){
    //[pin setPinColor:MKPinAnnotationColorPurple];
    pin.image = [UIImage imageNamed:@"pmuse.png"];
}

else if ([event.thetype isEqualToString:@"nightlife"]){
    pin.image = [UIImage imageNamed:@"pnight.png"];

}
else if ([event.thetype isEqualToString:@"parks"]){
    pin.image = [UIImage imageNamed:@"ppark.png"];

}
else if ([event.thetype isEqualToString:@"farms"]){
    pin.image = [UIImage imageNamed:@"pfarm.png"];

}

else {
    [pin setPinColor:MKPinAnnotationColorRed];

}

pin.canShowCallout = YES;
pin.animatesDrop = YES;

UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action:@selector(clickAnnotation:) forControlEvents:UIControlEventTouchUpInside];
[rightButton setTitle:event.uniqueID forState:UIControlStateNormal];

pin.rightCalloutAccessoryView = rightButton;

return pin;

}

2 个答案:

答案 0 :(得分:0)

@funatsg从此链接获取帮助...... http://blog.asolutions.com/2010/09/building-custom-map-annotation-callouts-part-1/

希望这能解决您的问题!

答案 1 :(得分:0)

嘿伙计们,我发现了什么问题。当我设置

region.span.longitudeDelta = 0.01f;
region.span.latitudeDelta = 0.01f;  

而不是0.2f。它实际上设法正确显示所有图钉图像。我认为这与重叠的图像或其他东西有关。不太确定。 :/

希望这可以帮助任何有同样问题的人!