2010-05-21 8 views
14

बनाएं क्या मैं MKAnnotation बना सकता हूं, या क्या यह केवल पढ़ा जा सकता है? मेरे पास निर्देशांक हैं, लेकिन setCoordinate का उपयोग कर मुझे MKAnnotation मैन्युअल रूप से बनाने में आसान नहीं लगता है।आईफोन: एमकेएनोटेशन

विचार?

उत्तर

40

MKAnnotation एक प्रोटोकॉल है। तो आपको अपनी खुद की एनोटेशन ऑब्जेक्ट लिखनी होगी जो इस प्रोटोकॉल को लागू करे। तो अपने MyAnnotation हैडर लगता है:

- (id) initWithCoordinate:(CLLocationCoordinate2D)coord 
{ 
    coordinate = coord; 
    return self; 
} 

तो नक्शा करने के लिए अपने टिप्पणी जोड़ने के लिए:

MyAnnotation * annotation = [[[MyAnnotation alloc] initWithCoordinate:coordinate] autorelease]; 
[self.mapView addAnnotation:annotation]; 

आप तो

@interface MyAnnotation : NSObject<MKAnnotation> { 
    CLLocationCoordinate2D coordinate; 
} 

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 

// add an init method so you can set the coordinate property on startup 
- (id) initWithCoordinate:(CLLocationCoordinate2D)coord; 

और अपने कार्यान्वयन (MyAnnotation.m) की तरह दिखता है एनोटेशन कॉलआउट पर एक शीर्षक और उपशीर्षक नहीं था, आपको शीर्षक और उपशीर्षक गुण जोड़ने की आवश्यकता है।

+0

यह वही है जो मुझे चाहिए था। मैं कहां रखूंगा - (आईडी) initWithCoordinate: (CLLocationCoordinate2D) समन्वय; तरीका? मेरी .h फ़ाइल या .m में? –

+0

कोई समस्या नहीं है। मैंने कुछ और विवरण के साथ उत्तर अपडेट किया है :) – RedBlueThing

+0

किसी कारण से, मुझे कोई '-initWithCoord:' विधि नहीं मिलती जब मैं निर्माण और चलाने की कोशिश करता हूं। –

32

आईफोन ओएस 4 में एक नई कक्षा एमकेपॉइंटएनोटेशन है जो एमकेएनोटेशन प्रोटोकॉल का एक ठोस कार्यान्वयन है।

+0

यह joshrl –

+1

को इंगित करने के लिए धन्यवाद यदि आपको केवल मूल टिप्पणियों की आवश्यकता है तो यह बहुत आसान है। धन्यवाद! – radven

+4

एमकेपॉइंटएनोटेशन * प्वाइंट एन्नोटेशन = [[एमकेपॉइंटएनोटेशन आवंटन] init]; बिंदुअनोटेशन.कोर्डिनेट = लोकेशन। कॉर्डिनेट; [mkMapView addAnotation: pointAnotation]; –

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