gpt4 book ai didi

ios - MKPointAnnotation 不会改变颜色

转载 作者:可可西里 更新时间:2023-11-01 05:22:05 27 4
gpt4 key购买 nike

我需要更改 MKPointAnnotation 对象的颜色,但我编写的方法似乎只生成红色图钉。该方法工作正常,但是当我调用该函数并传递给定常量之一的参数时, map 上出现的所有图钉都是红色的(默认值)。有什么想法吗?代码如下。

    -(MKAnnotationView*) returnPointView: (CLLocationCoordinate2D) location andTitle: (NSString*) title andColor: (int) color{
/*Method that acts as a point-generating machine. Takes the parameters of the location, the title, and the color of the
pin, and it returns a view that holds the pin with those specified details*/

MKPointAnnotation *resultPin = [[MKPointAnnotation alloc] init];
MKPinAnnotationView *result = [[MKPinAnnotationView alloc] initWithAnnotation:resultPin reuseIdentifier:Nil];
[resultPin setCoordinate:location];
resultPin.title = title;
result.pinColor = color;
return result;
}

//Function that calls above method
for(Party *party in allParties){
if(!party.alreadyAdded){
CLLocationCoordinate2D location = [party getPartylocation];
NSString *partyTitle = [party getPartyName];
MKAnnotationView *partyPin = [self returnPointView:location andTitle:partyTitle andColor:MKPinAnnotationColorGreen];
[self.map addAnnotation:partyPin.annotation];
NSLog(@"Adding Successful!");
party.alreadyAdded = YES;
}

}

最佳答案

您必须在 ViewController 的 header 中遵守 MKMapViewDelegate 协议(protocol)。

@interface mapViewController : UIViewController <MKMapViewDelegate>
@end

然后,在实现中你必须编写方法:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation

每次绘制注释时都会调用它。您应该在此处调用您的方法,而不仅仅是在添加注释时。

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{

MKAnnotationView *pinView = [self returnPointView:annotation.coordinate andTitle:annotation.title andColor:MKPinAnnotationColorGreen];

return pinView;
}

最后,在 viewDidLoad 中将 ViewController 设置为它的 UIMapView delegate 委托(delegate):

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self.mapView setDelegate:self];
}

我建议您看一下 Xcode 中的 MapCallouts 示例项目,它清晰简单。

同样,您应该使用 dequeueReusableAnnotationViewWithIdentifier 以提高内存效率(如示例所示)。

关于ios - MKPointAnnotation 不会改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19126655/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com