Me estoy frustrando bastante con las limitaciones de MKMapKit. Mi problema actual tiene que ver con el ordenamiento z de las vistas de anotación, particularmente en lo que se refiere a los toques. Si acepta el orden z predeterminado, Mapkit le ofrece:Ordenación Z de MKAnnotationViews
- El orden parece aleatorio. El orden z no está relacionado con el orden en que se agregaron las anotaciones.
- Si una anotación termina encima de otra, tocar la anotación superior generalmente muestra la llamada para la anotación inferior. Parece que la detección de aciertos ni siquiera respeta el orden de robo. ¿Que pasa con eso?
He intentado resolver # 1 usando algo similar al siguiente código encontrado en la web (que fue diseñado para dar un cierto control sobre el orden z)
- (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]; } } }
Corriendo a través de las vistas de anotación pasado a mapView: didAddAnnotationViews: y ajustar su orden z parece arreglar # 1. El problema es que ahora las vistas de las llamadas ya no están siempre en la parte superior de las vistas de anotación. El MapKit parece confundirse mucho sobre las capas (las leyendas se deben dibujar en una capa sobre todas las vistas de anotación). Incluso puedo descubrir cómo se confunde, ya que todas las MKAnnotationViews que recibe tienen la misma supervista (una clase privada MKOverlayView). Se podría pensar que cualquier diseño razonable dibujaría las leyendas sobre esta vista de superposición.
¿Alguien ha solucionado con éxito el nº 1 o el nº 2?
¿De dónde sacaste la clase TopBottomAnnotation? –
TopBottomAnnotation es el nombre de su clase de anotación –
... casi 6 años después y estoy teniendo el mismo problema. ¿Cómo no se ha solucionado esto? – Tys