Jestem coraz bardziej sfrustrowany ograniczeniami MKMapKit. Mój obecny problem związany jest z porządkowaniem widoków adnotacji, szczególnie w odniesieniu do dotknięć. Jeśli zaakceptujesz domyślną kolejność Z, zestaw map daje ci:Zamawianie Z MKAnnotationViews
- Kolejność jest losowa. Kolejność z-zi nie jest powiązana z kolejnością dodawania adnotacji.
- Jeśli jedna adnotacja kończy się na drugiej, dotknięcie górnej adnotacji powoduje wyświetlenie objaśnienia do dolnej adnotacji. Wygląda na to, że wykrywanie trafień nie spełnia nawet kolejności losowania. Co z tym?
Próbowałem rozwiązywania nr 1 przy użyciu coś podobnego do następującego kodu znalezionego w internecie (który został zaprojektowany, aby dać pewną kontrolę nad Z-order)
- (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]; } } }
przebiegającej przez widoków adnotacji przeszły do mapView: didAddAnnotationViews: i dostosowanie ich kolejności -z wydaje się naprawić # 1. Problem polega na tym, że widoki objaśnień nie są już zawsze widoczne w widokach adnotacji. Wygląda na to, że MapKit bardzo się myli co do warstw (objaśnienia powinny być rysowane w warstwie ponad wszystkimi widokami adnotacji). Mogę nawet dowiedzieć się, jak to jest mylone, ponieważ wszystkie otrzymane MKAnnotationView mają ten sam superview (prywatna klasa MKOverlayView). Można by pomyśleć, że każdy rozsądny projekt mógłby narysować objaśnienia dotyczące tego widoku nakładki.
Czy ktoś rozwiązał pomyślnie # 1 lub # 2?
Skąd wziąłeś klasę TopBottomAnnotation? –
TopBottomAnnotation to nazwa twojej klasy opisu adnotacji –
... prawie 6 lat później i mam ten sam problem. Jak to się nie udało? – Tys