2011-02-19 12 views
5

क्या किसी दिए गए पिनकॉलर के दिए गए एमकेमैप व्यू पर सभी एनोटेशन को निकालना संभव है? मैं अपने ऐप के एक भाग के लिए नए लोगों को प्रदर्शित करने से पहले मेरी मानचित्र पर सभी उपयोगकर्ता के प्रवेश किया एनोटेशन (पिन) स्पष्ट करने के लिए कोशिश कर रहा हूँ, लेकिन मैं नहीं जानता था कि कैसे बारीक मैं चुनिंदा हटाने के एनोटेशन में हो सकता है ...एक निश्चित पिनकॉलर के साथ MKMapView एनोटेशन निकालें?

मैं सिर्फ उन सभी एनोटेशन को हटाना चाहता हूं जिनमें एमकेपीनएनोटेशन कोलरग्रीन (हरा) पिन हैं, लेकिन अगर मैं एक तरीका है तो मैं उनको ट्रैक कर सकता हूं, तो मैं उपयोगकर्ता द्वारा दर्ज किए गए सभी पिन को भी हटा सकता हूं।

मैं जानता हूँ कि मैं बस कर सकता है:

[myMapView removeAnnotations:myMapView.annotations]; 

... तो सभी एनोटेशन मैं चाहता हूँ पुनः बनाने, लेकिन यह है कि संसाधनों की बर्बादी की तरह लगता है।

कोई सलाह?

उत्तर

10

मैं अब इस अधिकार का परीक्षण करने में सक्षम नहीं हूँ, लेकिन आप की कोशिश की है:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pinColor == %d", MKPinAnnotationColorGreen]; 
[myMapView removeAnnotations:[myMapView.annotations filteredArrayUsingPredicate:predicate]]; 

उपयोगकर्ता द्वारा जोड़ा लोगों के लिए के रूप में, आप अपने आप को उन का ट्रैक रखने की जरूरत हो सकती। आप एमकेपीएनएएनोटेशन का अपना उप-वर्ग भी बना सकते हैं। कि उपवर्ग पर, संपत्ति

@property (nonatomic, BOOL) addedByUser; 

जोड़ें। यदि आप उपयोगकर्ता द्वारा जोड़े गए थे तो आप अतिरिक्त ByUser को सत्य पर सेट कर सकते हैं और फिर ऊपर दिए गए समान दृष्टिकोण का उपयोग करके उन लोगों को फ़िल्टर कर सकते हैं (उदाहरण के लिए @ @ "जोड़ा गया यूजर == हाँ")।

+0

दो बहुत अच्छे विचार - मैंने एक और सबक्लास बनाने के बारे में नहीं सोचा था (मेरे पास वर्तमान में एक कस्टम सबक्लास है, और पिन रंग के आधार पर अलग-अलग प्रकार हैं), और यह आगे बढ़ने का सबसे अच्छा समाधान हो सकता है (मैं जोड़ने जा रहा हूं जैसे समय चल रहा है उतने प्रकार के स्थान)। – geerlingguy

+0

मैंने भविष्यवाणियों के आधार पर हटा दिया, लेकिन मुझे पिनकॉलर के बजाय शीर्षक मान का उपयोग करना पड़ा, क्योंकि पिनकॉलर myMapView.annotations के माध्यम से सुलभ नहीं लगता है ... – geerlingguy

+0

हमम ... मुझे थोड़ा आश्चर्य है कि पिनकॉलर भविष्यवाणी द्वारा फ़िल्टर नहीं करेगा। दस्तावेज कहता है कि वे गुण हैं, इसलिए मैं उन्हें कीपैथ नियमों का पालन करने की अपेक्षा करता हूं। लेकिन वैसे भी, अगर यह काम नहीं करता है, तो यह काम नहीं करता है। –

0

हो सकता है कि एनोटेशन के प्रत्येक समूह को उन एनोटेशन में पॉइंटर्स के एक सरणी (एनएसएमयूटेबलएरे) में रखें और फिर केवल उन्हें हटा दें?

+0

शायद यह काम करेगा, लेकिन मुझे लगता है कि मैथ्यू का जवाब मेरे उद्देश्यों के लिए थोड़ा और उपयुक्त है। – geerlingguy

संबंधित मुद्दे