在我的iphone應用程序中,我使用MapKit和MKMapView以及自定義的MKAnnotationView。在地圖上重疊註釋(MKAnnotationView)的問題
問題是當地圖上的註釋重疊時(在我的應用中,註釋是照片並且這些照片可能重疊),並且當您點擊前面出現的註釋時,它是接收事件的另一個註釋(背面)似乎是隨機的)。
我沒有找到任何方法將事件發送到前面的註釋。 我不敢相信這個bug /問題沒有任何解決方案!
Z ordering和Order of overlapping annotations關於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;
}
好主意。我做了透明UIView,發現它缺乏。 – 2010-04-24 18:01:16
我很想知道你是如何處理第三點的。你如何找到某個CGPoint或CGRect的最前面的註釋? – samvermette 2010-10-21 17:18:52