自定义地图Pin图像Objective-C

自定义地图Pin图像Objective-C,objective-c,image,mkannotation,mkannotationview,mkpinannotationview,Objective C,Image,Mkannotation,Mkannotationview,Mkpinannotationview,我目前正在努力使用自定义地图图钉图像,而不是默认的彩色图钉。我尝试过一些在线指南,但似乎无法将其整合到我当前的设置中 目前,我在特定时间(在线)设置了特定颜色(着色)的pin,当时间超出这些参数时,pin会变成不同的颜色 我想将这些pin更改为我创建的两个不同的自定义pin图像;一个用于在线,一个用于离线。 我读过一些关于MKPinAnnotationView的内容,不喜欢pinView.image属性(我尝试过这个,可以确认它不起作用) 如果有人可以编辑这段代码,这样我就可以为注释标记0创建一

我目前正在努力使用自定义地图图钉图像,而不是默认的彩色图钉。我尝试过一些在线指南,但似乎无法将其整合到我当前的设置中

目前,我在特定时间(在线)设置了特定颜色(着色)的pin,当时间超出这些参数时,pin会变成不同的颜色

我想将这些pin更改为我创建的两个不同的自定义pin图像;一个用于在线,一个用于离线。

我读过一些关于MKPinAnnotationView的内容,不喜欢pinView.image属性(我尝试过这个,可以确认它不起作用)

如果有人可以编辑这段代码,这样我就可以为注释标记0创建一个“online.png”图像,为注释标记1创建一个“offline.png”图像,那就太好了

MapViewController.m

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];

UIButton *advertButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

pinView.rightCalloutAccessoryView = advertButton;
pinView.canShowCallout = YES;
pinView.draggable = NO;
pinView.highlighted = YES;

if (annotation == mapView.userLocation)
    return nil;

if (([(Annotation*)annotation tag] == 0) && [[(Annotation*)annotation area] isEqualToString:@"Online"])

{
    pinView.pinTintColor = [UIColor colorWithRed:0.92 green:0.21 blue:0.21 alpha:1];
    pinView.alpha = 1;
    [advertButton addTarget:self action:@selector(Online:) forControlEvents:UIControlEventTouchUpInside];
}

else if (([(Annotation*)annotation tag] == 1) && [[(Annotation*)annotation area] isEqualToString:@"Offline"])

{
    pinView.pinTintColor = [UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:0.5];
    pinView.alpha = 1;
    [advertButton addTarget:self action:@selector(Offline:) forControlEvents:UIControlEventTouchUpInside];

}   
return pinView;
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释{
MKPinAnnotationView*pinView=[[MKPinAnnotationView alloc]initWithAnnotation:annotation重用标识符:@“CustomPinAnnotationView”];
UIButton*advertButton=[UIButton Button类型:UIButtonTypedTailDisclosure];
pinView.rightCalloutAccessoryView=广告按钮;
pinView.canShowCallout=是;
pinView.draggable=否;
pinView.highlighted=是;
if(注释==mapView.userLocation)
返回零;
如果(([(Annotation*)注释标记]==0)和(&[(Annotation*)注释区域]IsequalString:@“Online”])
{
pinView.pinTintColor=[UIColor COLOR WITHRED:0.92绿色:0.21蓝色:0.21阿尔法:1];
pinView.alpha=1;
[advertButton addTarget:self action:@selector(Online:)for ControlEvents:UIControlEventTouchUpInside];
}
如果(([(注释*)注释标记]==1)和(&[(注释*)注释区域]IsequalString:@“脱机”])
{
pinView.pinTintColor=[UIColor COLOR WITHRED:0.8绿色:0.8蓝色:0.8阿尔法:0.5];
pinView.alpha=1;
[advertButton addTarget:self action:@selector(脱机:)for ControlEvents:UIControlEventTouchUpInside];
}   
返回pinView;
}
任何帮助都将不胜感激;我不是天生的程序员,所以请放心

干杯


Lewis

如果要将pin显示为批注,请使用
MKPinAnnotationView
。如果要使用自定义批注图像,必须使用
MKAnnotationView
,并设置
图像
属性。
所以我建议更换

MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];  

并设置
图像
属性,例如使用:

pinView.image = [UIImage imageNamed:@„xxx“];  

当然,您应该适当地重命名
pinView
CustomPinAnnotationView
xxx

如果要将pin显示为批注,可以使用
MKPinAnnotationView
。如果要使用自定义批注图像,必须使用
MKAnnotationView
,并设置
图像
属性y、
所以我建议更换

MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];  

并设置
图像
属性,例如使用:

pinView.image = [UIImage imageNamed:@„xxx“];  

当然,您应该适当地重命名
pinView
CustomPinAnnotationView
xxx

您节省了我的时间。谢谢您节省了我的时间。谢谢