В моем iPhone приложения, я использую MapKit с MKMapView и пользовательских MKAnnotationView.
Проблема заключается в том, когда аннотациях перекрываться на карте (в моем приложении, аннотации фотография и эти фотографии могут перекрываться) и при нажатии на аннотации, которая появляется на передней панели, это еще одна аннотация (на спине), который получает событие (как представляется случайными ).
Я не нашел способ отправить событие в передней аннотацию. Я не могу поверить, что это ошибка / проблема не имеет решения!
Z упорядочение и Порядок перекрытия аннотаций вопросов по StackOverflow не помогла мне , что много.
Пожалуйста, любая идея приветствуется (даже грязные решения)!
Вот некоторые из моего кода (ничего особенного, очень распространено):
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;
}













