In mijn iPhone applicatie, ik gebruik MapKit met MKMapView en aangepaste MKAnnotationView.
Het probleem is wanneer annotaties overlappen op de kaart (in mijn app, annotaties zijn foto's en die foto's kunnen overlappen) en wanneer u tikt op de annotatie die aan de voorzijde verschijnt, is een andere annotatie (op de rug), die de gebeurtenis ontvangt (lijkt te zijn willekeurig ).
Ik heb geen manier om het evenement te sturen naar de voorkant annotatie niet vinden. Ik kan niet geloven dat deze bug / probleem geen oplossing te hebben!
Z bestellen en Orde van overlappende annotaties vragen over StackOverflow hielpen me niet zo veel.
Gelieve enig idee is welkom (zelfs vies oplossingen)!
Hier zijn een paar van mijn code (niets bijzonders, zeer vaak):
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
Hoofdklasse ... // Aantekeningen worden toegevoegd en een aantal van hen overlapt met anderen.
- (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;
}













