2011-03-30 17 views
7

अरे, मैं अपने मानचित्र पर एक एनोटेशन जोड़ने की कोशिश कर रहा हूं। मैं यह कैसे कर सकता हूं?MKMapView पर मानचित्र एनोटेशन कैसे जोड़ें?

यहाँ मेरा कोड:

- (void)abreMapa:(NSString *)endereco { 

NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", 
         [endereco stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]]; 
NSArray *listItems = [locationString componentsSeparatedByString:@","]; 

double latitude = 0.0; 
double longitude = 0.0; 

if([listItems count] >= 4 && [[listItems objectAtIndex:0] isEqualToString:@"200"]) { 
    latitude = [[listItems objectAtIndex:2] doubleValue]; 
    longitude = [[listItems objectAtIndex:3] doubleValue]; 
} 
else { 
    //Show error 
} 

CLLocationCoordinate2D coordinate; 
coordinate.latitude = latitude; 
coordinate.longitude = longitude; 
myMap.region = MKCoordinateRegionMakeWithDistance(coordinate, 2000, 2000); 

[self.view addSubview:mapa]; 


} 

धन्यवाद!

उत्तर

16

चूंकि एमकेएएनोटेशन एक प्रोटोकॉल है, इसलिए आपको अपनी खुद की कक्षा को परिभाषित करना होगा जो प्रोटोकॉल को लागू करता है। उदाहरण के लिए,

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

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate; 

आप एक अक्षांश है, तो स्थान के लिए देशांतर आप मैप करना चाहते हैं:

SPAnnotation *annotation = [[Annotation alloc] initWithCoordinate:CLLocationCoordinate2DMake(latitude, longitude)]; 
[myMap addAnnotation:annotation]; 
+0

इम हो रही "अघोषित पहचानकर्ता 'एनोटेशन' की –

+0

उपयोग के बाद से MKAnnotation एक प्रोटोकॉल है आप अपनी खुद की व्याख्या वर्ग को परिभाषित करना होगा। यह उत्तर देखें: http://stackoverflow.com/questions/2878758/iphone-create-mkannotation –

+6

आप प्री-डिफ़ाइंड एमकेपॉइंटएनोटेशन क्लास का भी उपयोग कर सकते हैं। – Anna

0

तुम भी एक टिप्पणी के वर्ग कि MKAnnotation प्रोटोकॉल को गोद ले अप कोड करने के लिए होगा । उदाहरण के लिए:

@interface MyMapAnnotation : NSObject <MKAnnotation> { 
... 
} 
+0

क्या आप इसे एक ही शीर्षलेख में करना चाहते हैं? –

+0

आप अपने एनोटेशन और मुख्य फ़ाइल के साथ अपनी एनोटेशन के लिए एक नई कक्षा बनाना चाहते हैं। कम से कम, इस वर्ग को लागू करने की आवश्यकता होगी - (आईडी) initWithCoords: (CLLocationCoordinate2D) coords और CLLocationCoordinate2D समन्वय संपत्ति। देखें: [एमकेएएनोटेशन डॉक्स] (http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKAnotation_Protocol/Reference/Reference.html) – jmans

0

प्रयास करें इस

Pin *selected = [[Pin alloc] init]; 

for(i=0; i<[[newxml dataarray] count]; i++) 
{ 
    gapi = [newxml.dataarray objectAtIndex:i]; 
    MKCoordinateRegion region ; // = { {0.0, 0.0 }, { 0.0, 0.0 } }; 
    region.center. latitude = [gapi.lat floatValue]; 
    region.center. longitude = [gapi.lng floatValue]; 

    region.span.longitudeDelta = 0.05f; 
    region.span.latitudeDelta = 0.05f; 

    [self.mapview setRegion:region animated:YES]; 

    Pin* myAnnotation1=[[Pin alloc] init]; 

    myAnnotation1.coordinate=region.center;; 
    myAnnotation1.title=gapi.name; 
    myAnnotation1.itemIndex = i; 
    myAnnotation1.subtitle=gapi.address; 
    [self.mapview addAnnotation:myAnnotation1]; 

    if (j == i) 
    { 
      selected = myAnnotation1; 
    } 

    if(k==123) 
    { 
     [self.mapview selectAnnotation:selected animated:NO]; 
    } 

}

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