Je reçois assez frustré par les limites de MKMapKit. Mon problème actuel a à voir avec le z-ordre des vues d'annotation, en particulier en ce qui concerne des touches. Si vous acceptez l'ordre z par défaut la MapKit vous donne:
- L'ordre apparaît au hasard. Le z-ordre est sans rapport avec l'ordre des annotations ont été ajoutées.
- Si une annotation se termine au-dessus d'un autre, touchant l'annotation supérieure apporte généralement la légende pour l'annotation de fond. Il semble que la détection de succès ne respecte même pas l'ordre de tirage au sort. Quoi de neuf avec ça?
J'ai essayé la résolution # 1 en utilisant quelque chose de similaire au code suivant trouvé sur le web (qui a été conçu pour donner un certain contrôle sur ordre z)
- (void) Mapview: (MKMapView *) Mapview didAddAnnotationViews: (NSArray *) {vues
pour (MKAnnotationView * annView dans les vues) {
TopBottomAnnotation * ann = (TopBottomAnnotation *) [d'annotation annView];
si ([haut ANN]) {
[[AnnView superview] bringSubviewToFront: annView];
} autre {
[[AnnView superview] sendSubviewToBack: annView];
}
}
}
Courir à travers les vues d'annotation transmises à Mapview: didAddAnnotationViews: et en ajustant leur ordre z ne semble fixer # 1. Le problème est que maintenant les vues de légende ne sont plus toujours sur les vues d'annotation. Le MapKit semble être très confus au sujet des couches (doivent être tirées des légendes dans une couche au-dessus de toutes les vues d'annotation). Je peux même comprendre comment il se confondre puisque tous les MKAnnotationViews que vous recevez ont le même superview (une classe privée MKOverlayView). On pourrait penser que toute conception raisonnable attirerait les légendes de cette vue superposition.
Quelqu'un at-il résolu # 1 ou # 2 avec succès?













