自定义地图 Pin 图 Objective-C
Custom Map Pin Image Objective-C
我目前正在努力使用自定义地图图钉图像而不是默认的彩色图钉。我在网上尝试了一些指南,但似乎无法将其整合到我当前的设置中。
目前,我在某些时间(在线)设置了某种颜色(有色)的引脚,当时间超出这些参数时,引脚会变成不同的颜色。
我想将这些图钉更改为我创建的两个不同的自定义图钉图像;一种用于在线,一种用于离线。
我读到一些关于 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;
}
如有任何帮助,我们将不胜感激;我不是天生的编码员所以放轻松。
干杯
刘易斯
如果要将图钉显示为注释,请使用 MKPinAnnotationView
。如果要使用自定义注释图像,则必须使用 MKAnnotationView
,并设置 image
属性.
所以我建议更换
MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];
来自
MKAnnotationView *pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];
并设置 image
属性,例如使用:
pinView.image = [UIImage imageNamed:@„xxx“];
当然,您应该适当地重命名pinView
、CustomPinAnnotationView
和xxx
。
我目前正在努力使用自定义地图图钉图像而不是默认的彩色图钉。我在网上尝试了一些指南,但似乎无法将其整合到我当前的设置中。
目前,我在某些时间(在线)设置了某种颜色(有色)的引脚,当时间超出这些参数时,引脚会变成不同的颜色。
我想将这些图钉更改为我创建的两个不同的自定义图钉图像;一种用于在线,一种用于离线。
我读到一些关于 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;
}
如有任何帮助,我们将不胜感激;我不是天生的编码员所以放轻松。
干杯
刘易斯
如果要将图钉显示为注释,请使用 MKPinAnnotationView
。如果要使用自定义注释图像,则必须使用 MKAnnotationView
,并设置 image
属性.
所以我建议更换
MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];
来自
MKAnnotationView *pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];
并设置 image
属性,例如使用:
pinView.image = [UIImage imageNamed:@„xxx“];
当然,您应该适当地重命名pinView
、CustomPinAnnotationView
和xxx
。