I min iphone applikasjon, jeg bruker MapKit med MKMapView og tilpasset MKAnnotationView.
Problemet er når merknader lapper på kartet (i min app, merknader er bilder og disse bildene kan overlappe) og når du trykker på merknaden som vises på forsiden, er det en annen merknad (på baksiden) som mottar hendelsen (synes å være tilfeldig ).
Jeg fant ikke noen måte å sende hendelsen til fronten merknader. Jeg kan ikke tro at denne feilen / problemet ikke har noen løsning!
Z bestilling og Order of overlappende merknader spørsmål om Stackoverflow hjalp ikke meg så mye.
Vennligst noen ide er velkommen (selv skitne løsninger)!
Her er noen av koden min (ikke noe fancy, svært vanlig):
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
Hoved klasse ... // Kommentarer er lagt til og noen av dem overlapper med andre.
- (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;
}













