मैं एमके मैपकिट की सीमाओं से काफी निराश हो रहा हूं। मेरी वर्तमान समस्या को एनोटेशन विचारों के जेड-ऑर्डरिंग के साथ करना है, खासकर जब यह स्पर्श से संबंधित है। यदि आप डिफ़ॉल्ट जेड-ऑर्डर स्वीकार करते हैं तो मैपकिट आपको देता है:एमकेएनोटेशन व्यूज़ के जेड ऑर्डरिंग
- ऑर्डर यादृच्छिक दिखाई देता है। जेड-ऑर्डर एनोटेशन जोड़े जाने के क्रम से असंबंधित है।
- यदि एक एनोटेशन दूसरे के शीर्ष पर समाप्त होता है, तो शीर्ष एनोटेशन को छूने से आम तौर पर नीचे एनोटेशन के लिए कॉलआउट लाया जाता है। ऐसा लगता है कि हिट डिटेक्टिंग ड्रॉ ऑर्डर का भी सम्मान नहीं करती है। उसके साथ क्या है?
मैं सुलझाने # 1 निम्नलिखित कोड को वेब पर पाया
- (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]; } } }
एनोटेशन पारित कर दिया विचारों के माध्यम से चल रहा है (जो ज़ेड-ऑर्डर पर कुछ नियंत्रण देने के लिए बनाया गया था) के लिए कुछ इसी तरह का उपयोग कर की कोशिश की है नक्शा देखने के लिए: didAddAnnotationViews: और उनके z-order को एडजस्ट करना # 1 को ठीक करने लगता है। समस्या यह है कि अब कॉलआउट विचार हमेशा एनोटेशन विचारों के शीर्ष पर नहीं हैं। मैपकिट परतों के बारे में बहुत उलझन में प्रतीत होता है (कॉलआउट सभी एनोटेशन दृश्यों के ऊपर एक परत में खींचा जाना चाहिए)। मैं यह भी समझ सकता हूं कि यह कैसे भ्रमित हो रहा है क्योंकि आपके द्वारा प्राप्त सभी एमकेएनोटेशन व्यू में एक ही पर्यवेक्षण (एक निजी वर्ग MKOverlayView) है। आपको लगता है कि कोई भी उचित डिजाइन इस ओवरले व्यू के बारे में कॉलआउट आकर्षित करेगा।
क्या किसी ने सफलतापूर्वक # 1 या # 2 हल किया है?
आपको टॉपबॉटमएनोटेशन क्लास कहां मिला? –
TopBottomAnnotation आपके एनोटेशनव्यू क्लास –
का नाम है ... लगभग 6 साल बाद और मुझे एक ही समस्या है। यह कैसे तय नहीं किया गया है? – Tys