मेरे iphone आवेदन में, मैं MKMapView और कस्टम MKAnnotationView साथ MapKit उपयोग कर रहा हूँ।
समस्या यह है जब एनोटेशन नक्शे पर ओवरलैप (मेरे एप्लिकेशन में, एनोटेशन तस्वीरें हैं और उन फ़ोटो ओवरलैप हो सकता है) और जब आप एनोटेशन उस मोर्चे पर दिखाई देता है पर टैप करते हैं, यह एक और एनोटेशन (पीठ पर), जो घटना प्राप्त करता है (यादृच्छिक प्रतीत हो रहा है )।
मैं किसी भी तरह सामने एनोटेशन को घटना भेजने के लिए नहीं मिला। मैं विश्वास नहीं कर सकता इस बग / समस्या किसी भी समाधान नहीं है!
जेड आदेश और एनोटेशन ओवरलैपिंग के आदेश 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;
}













