Ich bin ziemlich frustriert mit den Einschränkungen von MKMapKit. Mein aktuelles Problem hat mit der z-Anordnung von Anmerkungsansichten zu tun, insbesondere in Bezug auf Berührungen. Wenn Sie die standardmäßige Z-Reihenfolge akzeptieren, gibt Ihnen das Mapkit Folgendes:Z-Bestellung von MKAnnotationViews
- Die Reihenfolge erscheint zufällig. Die Z-Reihenfolge hat keinen Bezug zur Reihenfolge, in der die Anmerkungen hinzugefügt wurden.
- Wenn eine Anmerkung über einer anderen endet, wird durch Tippen auf die obere Anmerkung im Allgemeinen die Legende für die untere Anmerkung angezeigt. Es scheint, als ob die Treffererkennung nicht einmal die Zeichenreihenfolge berücksichtigt. Was ist damit?
Ich habe die Lösung versucht, # 1 auf dem Internet gefunden, etwas ähnlich dem folgenden Code
- (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]; } } }
Laufen durch die Beschriftungsansichten (die eine gewisse Kontrolle über z-Ordnung zu geben entworfen wurde) übergeben zu mapView: didAddAnnotationViews: und ihre Z-Reihenfolge zu justieren scheint # 1 zu beheben. Das Problem besteht nun darin, dass die Callout-Ansichten nicht mehr im Vordergrund der Anmerkungsansichten stehen. Das MapKit scheint sehr verwirrt über die Layer zu sein (Callouts sollten in einer Ebene über allen Anmerkungsansichten gezeichnet werden). Ich kann sogar herausfinden, wie es verwirrt wird, da alle MKAnnotationViews, die Sie erhalten, die gleiche Superview (eine private Klasse MKOverlayView) haben. Sie würden denken, dass jedes vernünftige Design die Callouts über diese Overlay-Ansicht zeichnen würde.
Hat jemand # 1 oder # 2 erfolgreich gelöst?
Woher haben Sie die TopBottomAnnotation-Klasse? –
Die TopBottomAnnotation ist der Name Ihrer AnnotationView-Klasse –
... fast 6 Jahre später und ich habe das gleiche Problem. Wie ist das nicht behoben worden? – Tys