MKMapKitの制限にかなり不満を感じています。私の現在の問題は、注釈ビューのzオーダリングと関連しています。特にタッチに関連しています。あなたがデフォルトのzオーダーを受け入れるなら、mapkitはあなたに次のものを与えます:MKAnnotationViewsのZオーダー
- 注文はランダムに表示されます。 zオーダーは、注釈が追加された順序とは無関係です。
- 1つの注釈が別の注釈の上に表示される場合は、通常、上部注釈をタッチすると、下部注釈の吹き出しが表示されます。ヒット検出が描画命令を尊重しないようだ。どうしたの?
私は渡された注釈ビューを走る
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { for (MKAnnotationView * annView in views) { TopBottomAnnotation * ann = (TopBottomAnnotation *) [annView annotation]; if ([ann top]) { [[annView superview] bringSubviewToFront:annView]; } else { [[annView superview] sendSubviewToBack:annView]; } } }
(z順序をある程度制御を与えるように設計された)ウェブ上で発見次のコードに似たものを使用して1位を解決しようとしましたmapView:didAddAnnotationViews:そして、そのzオーダーを調整することは、#1を修正するようです。問題は、吹き出しビューがアノテーションビューの最上部に表示されなくなったことです。 MapKitはレイヤーについて非常に混乱しているようです(注釈はすべての注釈ビューの上のレイヤーに描画される必要があります)。あなたが受け取るすべてのMKAnnotationViewsが同じスーパービュー(プライベートクラスMKOverlayView)を持っているので、どのように混乱しているのか把握することもできます。あなたは、合理的なデザインがこのオーバーレイビューについてのコールアウトを描くと思います。
#1または#2を解決した人は誰ですか?
TopBottomAnnotationクラスはどこから取得しましたか? –
TopBottomAnnotationはannotationviewクラスの名前です –
...約6年後、私は同じ問題を抱えています。どのようにこれは修正されていないのですか? – Tys