gpt4 book ai didi

ios - MKPinAnnotationView pinColor

转载 作者:行者123 更新时间:2023-12-02 01:31:55 28 4
gpt4 key购买 nike

我不明白为什么(理论上)与 MKPointAnnotation 关联的 MKPinAnnotationView 没有出现在 map 上。事实上,图钉出现了,但它不是应有的紫色...

这是代码:

MKPointAnnotation *myPersonalAnnotation= [[MKPointAnnotation alloc]init];
myPersonalAnnotation.title= [appDelegate.theDictionary objectForKey:@"theKey"];
myPersonalAnnotation.coordinate=CLLocationCoordinate2DMake(6.14, 10.7);
MKPinAnnotationView *myPersonalView=[[MKPinAnnotationView alloc] initWithAnnotation:myPersonalAnnotation reuseIdentifier:@"hello"];
myPersonalView.pinColor=MKPinAnnotationColorPurple;
[myMap addAnnotation:myPersonalAnnotation];

最佳答案

如果您想创建与默认红色图钉不同的注释 View ,则必须在 map View 的 viewForAnnotation 委托(delegate)方法中创建并返回它。

每当需要显示某些注释(内置用户位置或您添加的注释)时, map 都会自动调用 viewForAnnotation 委托(delegate)方法。

从调用 addAnnotation 之前删除 myPersonalView 的本地创建,并改为实现 viewForAnnotation 方法。

例如:

//in your current method...
MKPointAnnotation *myPersonalAnnotation= [[MKPointAnnotation alloc]init];
myPersonalAnnotation.title= [appDelegate.theDictionary objectForKey:@"theKey"];
myPersonalAnnotation.coordinate=CLLocationCoordinate2DMake(6.14, 10.7);
[myMap addAnnotation:myPersonalAnnotation];

//...

//add the viewForAnnotation delegate method...
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
//if annotation is the user location, return nil to get default blue-dot...
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;

//create purple pin view for all other annotations...
static NSString *reuseId = @"hello";

MKPinAnnotationView *myPersonalView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseId];
if (myPersonalView == nil)
{
myPersonalView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId];
myPersonalView.pinColor = MKPinAnnotationColorPurple;
myPersonalView.canShowCallout = YES;
}
else
{
//if re-using view from another annotation, point view to current annotation...
myPersonalView.annotation = annotation;
}

return myPersonalView;
}


确保设置了 map View 的 delegate 属性,否则将不会调用委托(delegate)方法。
在代码中,使用 myMap.delegate = self; (例如,在 viewDidLoad 中),或者如果 myMap 在 Interface Builder 中建立连接>IBOutlet.

关于ios - MKPinAnnotationView pinColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13462007/

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