我正在从数据库中检索一些位置,并希望根据位置的类别自定义引脚的颜色。例如,所有“收藏”位置可能都是紫色(甚至使用自定义图像)。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
if([annotation isKindOfClass:[MKUserLocation class]]) { // This is the current location
return nil; // Don't change anything... return
}
static NSString *identifier = @"myAnnotation"; // Create a reusable class
MKPinAnnotationView * annotationView = (MKPinAnnotationView*) [self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (!annotationView) {
annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
// .. some kind of test goes in here...
// If this is a favourite annotation, then show it in Purple
annotationView.pinColor = MKPinAnnotationColorPurple;
// Without a proper test, the current code has all pins go Red
// If it's a normal Annotation, then show it in Red
annotationView.pinColor = MKPinAnnotationColorRed;
} else {
annotationView.annotation = annotation;
}
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
return annotationView;
}
我想要的是能够查询正在显示的特定注释。我假设这个方法是根据当时显示的点调用的,所以设置pinColor的顺序不是那么可预测的。
我想引用NSManagedObject的特定属性来确定设置引脚的颜色。我知道我只有3针颜色。那不是问题。我只想了解它是如何工作的,然后我可以使它更复杂。
我不想对描述进行测试,因为多个描述可能相同但位置不同且类别也不同。例如,是否可以在Annotation创建中使用指针指向可在viewForAnnotation中引用的另一个类?
有什么想法吗?