Nella mia applicazione iphone, sto usando MapKit con MKMapView e personalizzati MKAnnotationView.
Il problema è quando le annotazioni si sovrappongono sulla mappa (nella mia app, le annotazioni sono foto e quelle foto possono sovrapporsi) e quando si tocca l'annotazione che appare sulla parte anteriore, è un altro di annotazione (sul retro), che riceve l'evento (sembra essere casuale ).
Non ho trovato alcun modo per inviare l'evento per l'annotazione anteriore. Non posso credere che questo bug / problema non ha una soluzione!
Z ordinamento e Ordine di sovrapposizione annotazioni domande su StackOverflow non mi ha aiutato più di tanto.
Si prega di qualsiasi idea è benvenuto (anche soluzioni sporche)!
Ecco alcuni dei miei codice (niente di speciale, molto comune):
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
Classe principale ... // annotazioni vengono aggiunti e alcuni di loro si sovrappone con gli altri.
- (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;
}













