0

我有一张上面有多个注释的地图。我能够显示第一个和最后一个注释。我想给每个注释一个不同的颜色。

这是我如何插入注释的代码

if(i<1 || i >object.count-2)            
{    
        MyAnnotation* myAnnotation1=[[MyAnnotation alloc] init];                        
        myAnnotation1.coordinate=theCoordinate1;
        myAnnotation1.title=DEVNAME;
        myAnnotation1.subtitle=it.address;                        
        [mapView addAnnotation:myAnnotation1];                        
        [annotations addObject:myAnnotation1];                             
}

if 条件是读取数组的索引以仅删除第一个和最后一个注释。

这是我如何在地图上放置大头针...

-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:
    (id <MKAnnotation>)annotation {
    MKPinAnnotationView *pinView = nil; 
    if(annotation != mapView.userLocation)  
    {

        static NSString* MyAnnotationIdentifier = @"MyAnnotationIdentifier";
        MKPinAnnotationView* customPinView = [[[MKPinAnnotationView alloc]
                                               initWithAnnotation:annotation reuseIdentifier:MyAnnotationIdentifier] autorelease];
        customPinView.pinColor = MKPinAnnotationColorRed;
        customPinView.animatesDrop = YES;
        customPinView.canShowCallout = YES;



       UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        customPinView.rightCalloutAccessoryView = rightButton;

        return customPinView;
    }
    else
    {
        pinView.annotation = annotation;
    }
    return pinView;
  }

如何不同的注释颜色?

4

2 回答 2

0

使用 MKAnnotationView 类并为每个引脚设置自定义图像:

MKAnnotationView *customPinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil];
customPinView.image = [UIImage imageNamed:@"pin1.png"];
.
.
.

而不是使用应用程序包中的图像,您可能需要以编程方式构建 UIImage 以便获得独特的颜色,这取决于您。

此外,您可以在注释上设置一个值,以帮助识别哪个注释获取哪个图像。您将继承 MKAnnotation 以添加这个称为 pinNumber 的整数属性。

myAnnotation.pinNumber = 2;

customPinView.image = [UIImage imageNamed:[NSString stringWithFormat:@"pin%d.png",annotation.pinNumber]];
于 2012-09-11T12:35:43.640 回答
0

当然,除了第一个和最后一个引脚之外,它不会工作,对于其余的引脚,else部分代码将执行。

所以MKPinAnnotationView *pinView会有nil。所以没有分配内存的注释,不能改变颜色!!!:-)

您必须根据您的要求将 for else 部分放在alloc某处initMKPinAnnotationView *pinView

于 2012-09-11T12:36:41.330 回答