Primesc destul de frustrat cu limitările de MKMapKit. Problema mea actuală are de a face cu z ordonarea de opinii adnotare, în special în care se referă la atingeri. Dacă acceptați implicit z ordinea în care mapkit vă oferă:
- Ordinea apare aleator. Z ordinea nu are legătură cu ordinea au fost adăugate adnotări.
- Dacă o adnotare se termină pe partea de sus a unui alt una, atingând adnotarea sus aduce în general în sus înștiințări adnotarea jos. Se pare ca a lovit chiar și detectarea nu respectă ordinea de desenare. Ce-i cu aia?
Am încercat rezolvarea # 1 folosind ceva similar cu următorul cod găsit pe web (care a fost proiectat pentru a oferi un anumit control asupra ordinea z)
- (void) mapView: (MKMapView *) mapView didAddAnnotationViews: (NSArray *) vizualizări {
pentru (MKAnnotationView * annView vizualizări) {
TopBottomAnnotation * ann = (TopBottomAnnotation *) [annView adnotare];
if ([ann sus]) {
[[AnnView Superview] bringSubviewToFront: annView];
} Else {
[[AnnView Superview] sendSubviewToBack: annView];
}
}
}
Rularea prin punctele de vedere adnotare trecut la mapView: didAddAnnotationViews: și ajustarea lor ordinea z pare să se stabilească # 1. Problema este că acum punctele de vedere înștiințări nu mai sunt întotdeauna pe partea de sus pentru punctele de vedere adnotată. MapKit pare a obține foarte confuz cu privire la straturile (înștiințări ar trebui să fie trase într-un strat de mai sus toate punctele de vedere adnotare). Pot să dau seama cum chiar ea este obtinerea confundat, deoarece toate MKAnnotationViews le primiți au aceeași SuperView (o clasă privată MKOverlayView). Te-ar crede orice design rezonabil ar trage înștiințările despre acest punct de vedere suprapunere.
Are cineva rezolvat # 1 sau # 2 cu succes?













