मैंने कक्षा से व्युत्पन्न वस्तुओं के एनएसएमयूटेबलएरे को स्थापित किया है जो एमकेएनोटेशन प्रोटोकॉल के अनुरूप है। मैं सेटअप सेटअप शीर्षक और टिप्पणी के लिए उपशीर्षक है और सफलतापूर्वक उपयोग MKMapView करने के लिए उन्हें जोड़ लिया है:एमकेमैप व्यू, एनिमेट्रॉप?
[[self customMapView] addAnnotations:locationArray];
क्या मैं अब क्या करना चाहते हैं छोड़ने पिन चेतन है, शुरू में मैंने सोचा था कि मैं कर सकता है कि Option1 साथ , यह सब कुछ काम करता है, लेकिन पिन एनिमेटेड ड्रॉप नहीं करते हैं।
// Option1
// WORKS FOR: pinColor YES, animatesDrop NO, LABEL YES
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
for(MKPinAnnotationView *eachView in views) {
[eachView setAnimatesDrop:YES];
[eachView setPinColor:MKPinAnnotationColorPurple];
}
}
मेरा अगला अनुमान Option2 कोशिश करने के लिए किया गया था, यह बहुत अच्छी तरह से काम करने के लिए लगता है, लेकिन मैं दो मुद्दे हैं। शीर्षक और उपशीर्षक दिखाई नहीं देते हैं, मेरी कस्टम एनोटेशन ऑब्जेक्ट पास हो रही है (मैं इसे डीबगर में देख सकता हूं) लेकिन इसमें मौजूद जानकारी नए pin
पर नहीं जा रही है। दूसरा यह एमकेएनोटेशन व्यू का एक नया सेट बनाता है, पुराने लोगों के साथ क्या होता है, क्या स्मृति मेमोरी लीक के साथ समस्याएं होती हैं?
// Option2
//FOR: pinColor YES, animatesDrop YES, LABEL NO
- (MKAnnotationView *) mapView: (MKMapView *) mapView viewForAnnotation: (id<MKAnnotation>) annotation {
MKPinAnnotationView *pin = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier: @"annotation_ID"];
if (pin == nil) {
pin = [[[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier: @"annotation_ID"] autorelease];
} else {
pin.annotation = annotation;
}
pin.pinColor = MKPinAnnotationColorRed;
pin.animatesDrop = YES;
return pin;
}
संपादित करें: मैं pin.canShowCallout = YES;
अपने विकल्प 2 कोड में, जब पिन यह एनोटेशन सेट नहीं होगी बनाई गई है। मैं "else" को हटा दूंगा और pin.annotation = एनोटेशन लाइन इंडेंट करूँगा, ताकि यह हमेशा सेट हो जाए। – theLastNightTrain