您好,感谢您的帮助。
我正在使用以下代码在我的 MapView 注释上设置图钉颜色?
- (MKAnnotationView *)mapViewMKMapView *)mapView viewForAnnotationid <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier"pinView"];
if (!pinView) {
//////////////
pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier"pinView"];
pinView.pinColor = MKPinAnnotationColorGreen;
if([[annotation title] isEqualToString"MuRoom"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorRed;
NSLog( @"data from ann index %@", annTile);
}
if([[annotation title] isEqualToString"Mike's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorRed;
NSLog( @"data from ann index %@", annTile);
}
if([[annotation title] isEqualToString"Bill's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorPurple;
NSLog( @"data from ann index %@", annTile);
}
if([[annotation title] isEqualToString"Steve's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorGreen;
NSLog( @"data from ann index %@", annTile);
}
if([[annotation title] isEqualToString"Louisa's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorGreen;
NSLog( @"data from ann index %@", annTile);
}
pinView.animatesDrop = YES;
pinView.canShowCallout = YES;
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
pinView.rightCalloutAccessoryView = rightButton;
} else {
pinView.annotation = annotation;
}
return pinView;
}
I am then using the function below to filter my pins locaions
-(void)FilterAddAllid)sender
{
[mapview removeAnnotations:annoArra];
[mapview removeAnnotations:annoArrayVenue];
[mapview removeAnnotations:artArray];
// CLLocationCoordinate2D center = mapview.centerCoordinate;
// mapview.centerCoordinate = center;
[mapview addAnnotations:annoArra];
[mapview addAnnotations:annoArrayVenue];
[mapview addAnnotations:artArray];
}
-(void)FilterArtid)sender
{
[mapview removeAnnotations:annoArra];
[mapview removeAnnotations:artArray];
[mapview removeAnnotations:annoArrayVenue];
[mapview addAnnotations:annoArra];
}
-(void)FilterVenueid)sender
{
[mapview removeAnnotations:annoArra];
[mapview removeAnnotations:artArray];
[mapview removeAnnotations:annoArrayVenue];
[mapview addAnnotations:artArray];
}
问题:如何让引脚颜色保持原来的颜色?在我过滤后,它们会作为随机的 pin 颜色返回。
再次感谢。
Best Answer-推荐答案 strong>
这是因为您没有正确使用“reuseIdentifier”。当您从 dequeueReusableAnnotationViewWithIdentifier"pinView"取回 pin 时,您需要:
始终设置图钉颜色,或者
为每个彩色图钉使用不同的重用标识符
即你可能会得到一个带有红色图钉的可重用 View ,并且你想显示一个蓝色图钉
示例:
MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier"pinView"];
if (!pinView) {
//////////////
pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier"pinView"];
pinView.animatesDrop = YES;
pinView.canShowCallout = YES;
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
pinView.rightCalloutAccessoryView = rightButton;
} else {
pinView.annotation = annotation;
}
// SET THE PIN COLOR REGARDLESS OF WHETHER A REUSABLE ANNOTATION WAS RETURNED OR NOT
pinView.pinColor = MKPinAnnotationColorGreen;
if([[annotation title] isEqualToString:@"MuRoom"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorRed;
NSLog( @"data from ann index %@", annTile);
}
if([[annotation title] isEqualToString:@"Mike's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorRed;
NSLog( @"data from ann index %@", annTile);
}
if([[annotation title] isEqualToString:@"Bill's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorPurple;
NSLog( @"data from ann index %@", annTile);
}
if([[annotation title] isEqualToString:@"Steve's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorGreen;
NSLog( @"data from ann index %@", annTile);
}
if([[annotation title] isEqualToString:@"Louisa's"])
{
// Do somethingMKAnnotation
pinView.pinColor = MKPinAnnotationColorGreen;
NSLog( @"data from ann index %@", annTile);
}
关于objective-c - ios: MapView Pin 颜色注释不断变化;为什么?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/14106033/
|