2011-05-30 6 views
6

में कस्टम एनोटेशन छवि मैं एक विशिष्ट छवि के साथ विशिष्ट आईओएस मैपकिट "पिन" को प्रतिस्थापित करने की कोशिश कर रहा हूं। मैं इतना कोडिंग मुझे यकीन है कि वास्तव में क्यों यह काम नहीं कर रहा नहीं कर रहा हूँ करने के लिए नए हूँ, लेकिन यहाँ मैं क्या प्रयास किया है है:आईओएस

विधि

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 

मेरे पास है, अन्य बातों के अलावा के लिए

, यह:

pinView.animatesDrop=YES; 
pinView.canShowCallout=YES; 
//pinView.pinColor=MKPinAnnotationColorPurple; 
UIImage *pinImage = [UIImage imageNamed:@"Jeff.png"]; 
[pinView setImage:pinImage]; 

हालांकि, कोड ठीक से संकलित करता है, पिनव्यू पिन इमेज सेट नहीं किया जा रहा है। कोई विचार क्यों नहीं?

+0

देखें http://stackoverflow.com/questions/5373265/custom-mkannotation-image-goes-back-to-default-when-i-attempt-to-drag, http://stackoverflow.com/questions/ 10501341/mkpinannotationview-custom-image-is-replace-by-pin-with-anim-ड्रॉप, http://stackoverflow.com/questions/9814988/mkmapview-instead-of-annotation-pin-a- कस्टम-view, आदि – Anna

उत्तर

3

सब आप पर अंतिम पंक्ति बदल करना है:

[pinView addSubview:pinImage]; 

पूर्ण उदाहरण:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 

    MKPinAnnotationView *annView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"ParkingPin"]; 

    UIImageView *imageView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pin_parking.png"]] autorelease]; 

    annView.animatesDrop = TRUE; 
    annView.canShowCallout = YES; 
    annView.calloutOffset = CGPointMake(-5, 5); 
    [annView addSubview:imageView]; 
    return annView; 
} 

आशा है कि यह मदद करता है!

+3

काम नहीं करता है। यह पिन और छवि दिखाता है। – Oliver

3

छवि annView का बटन instand को स्थापित करना चाहिए, मैं इस तरह का उपयोग करें:

UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
[button setImage:[UIUtils getStyleImage:@"page_map_accessory_button.png"] forState:UIControlStateNormal]; 
[button setImage:[UIUtils getStyleImage:@"page_map_accessory_button.png"] forState:UIControlStateSelected]; 
[button setImage:[UIUtils getStyleImage:@"page_map_accessory_button.png"] forState:UIControlStateHighlighted]; 
pinView.rightCalloutAccessoryView = button; 
0

बस कार्य करें:

annView.image=[UIImage imageNamed:@"imagename.png"]; 
2

जवाब मैं यहाँ नहीं देख रहा हूँ, यह है कि आप चाहिए दृश्य के भीतर एक MKAnnotationView को हटाएं या बनाएं ForAnotation विधि, और अपनी कक्षा को मानचित्र दृश्य के प्रतिनिधि के रूप में भी रखें ताकि यह दृश्य प्राप्त करने के लिए इस विधि को कॉल कर सके।

यदि आपने एनोटेशन दृश्यों को कहीं और बनाया है तो छवि प्रॉपर्टी का उपयोग करके सेट की गई कोई भी कस्टम छवियां प्रदर्शित नहीं होंगी, और आपको केवल एक पिन दिखाई देगा।

+0

एमकेएएनोटेशन व्यू काम करता है, एमकेपीएनएनोटेशन व्यू नहीं होगा। – Jenn

+0

PinAnnotationView केवल अंतर्निहित पिन छवियों का उपयोग करने के लिए उपयोग किया जाता है जैसा कि मैं समझता हूं, इसलिए मुझे नहीं लगता कि यह एक कस्टम छवि सेट करने का समर्थन करेगा ... –

1

बस अपने कोड से "animatesDrop" लाइन हटाएं। यह आप के लिए काम करेंगे।