私のiPhoneアプリケーションでは、MapKitとMKMapViewおよびカスタムMKAnnotationViewを使用しています。
問題は、注釈が地図上で重なっている場合(私のアプリでは、注釈は写真であり、それらの写真が重なっている可能性があります)、前面に表示される注釈をタップすると、イベントを受け取る別の注釈(背面)です(ランダムに見える) )。
イベントをフロントアノテーションに送信する方法が見つかりませんでした。このバグ/問題に解決策がないなんて信じられません!
スタックオーバーフローに関するZの順序と重複する注釈の順序の質問はあまり役に立ちませんでした。
どんなアイデアでも大歓迎です(汚い解決策でも)!
これが私のコードの一部です(派手なものはなく、非常に一般的です):
CustomAnnotation.h
@interface CustomAnnotation : NSObject <MKAnnotation> {
@private
CustomAnnotationView* view;
}
@property (nonatomic, retain) CustomAnnotationView* view;
@end
CustomAnnotation.m
@implementation CustomAnnotation
@synthetize view;
CustomAnnotationView.h
@interface CustomAnnotationView : MKAnnotationView {
}
@end
CustomAnnotationView.m
@implementation CustomAnnotationView
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
// Do something related to the annotation tapped
}
@end
メインクラス...//注釈が追加され、それらの一部が他の注釈と重複しています。
- (void)addAnnotation:(CustomAnnotation*)annotation {
[map addAnnotation:annotation];
}
...
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
NSString* identifier = getIdentifierFromAnnotation(annotation);
CustomAnnotationView* view;
if(!(view = (CustomAnnotationView*)[map dequeueReusableAnnotationViewWithIdentifier:identifier])) {
view = [[CustomAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier: identifier];
[(CustomAnnotation*)annotation setView:view];
[view release];
}
return view;
}