私のアプリでは、地図上に複数の注釈を表示しています。さまざまな注釈がたくさんありますが、基本的には、それぞれ独自の画像を持つ 12 の異なる種類の注釈があります (つまり、12 の異なる注釈画像)。
現在のコードでは、MKAnnotation をサブクラス化し、「識別子」と呼ばれるプロパティを与えました。注釈を作成すると、この識別子は適切な値に設定されるため、後で特定の注釈グループをフィルタリングして、それらに権利を与えることができます。 viewForAnnotation の画像。
- (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id<MKAnnotation>)annotation {
CustomAnnotation *pin = annotation;
MKAnnotationView *pinView=nil;
if ([annotation isKindOfClass:[MKUserLocation class]]) {
return nil;
}
else if ([pin.identifier isEqualToString:@"tree"]) { //give annotation a tree image
pinView = (MKPinAnnotationView *)[aMapView dequeueReusableAnnotationViewWithIdentifier:@"OwnerAnnotationString"];
pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"OwnerAnnotationString"];
pinView.image = [UIImage imageNamedForDevice:@"tree"];
pinView.centerOffset = CGPointMake(0, -53/2);
return pinView;
}
else if ([pin.identifier isEqualToString:@"house"]){ //give annotation a house image
pinView = (MKPinAnnotationView *)[aMapView dequeueReusableAnnotationViewWithIdentifier:@"SmallGoldPinStringAnkeren"];
pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"anotheridentifier"];
pinView.image = [UIImage imageNamedForDevice:@"house"];
pinView.centerOffset = CGPointMake(8, -43/2);
return pinView;
}
//and so on
これ以外の場合は好きではなく、フィルタリングプロセスが非常に非効率的であるため、さまざまな注釈に画像を設定するための最良かつ最も迅速な方法は何か疑問に思っていました.
最後に、この例は注釈を使用して行われますが、このシナリオに何度も遭遇したため、実際に私の質問は次のとおりです。
Objective-Cで特定のオブジェクトに適切な値を設定できるように、対話しているオブジェクトの種類を確認する最良の方法は何ですか?