În cererea mea iphone, folosesc MapKit cu MKMapView și personalizate MKAnnotationView.
Problema este atunci când adnotările se suprapun pe hartă (în aplicația mea, adnotări sunt fotografii și acele fotografii se pot suprapune) și atunci când apăsați pe adnotarea care apare în partea frontală, este o altă adnotare (pe spate), care primește evenimentul (pare a fi aleatoare ).
Nu am găsit nici un fel de a trimite evenimentul adnotarea din față. Nu pot să cred că acest bug-ul / problemă nu are nici o soluție!
Z prin care se dispune și de comandă care se suprapun adnotărilor întrebări cu privire la StackOverflow nu mă ajuta atât de mult.
Vă rugăm orice idee este (chiar și soluții murdare) Bine ai venit!
Iată o parte din codul meu (nimic fantezie, foarte frecvente):
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
Clasa principală ... // se adaugă adnotările, iar unele dintre ele se suprapune cu alte persoane.
- (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;
}













