2011-11-27 15 views
10

आईओएस 5 में, जियोकोड एड्रेस को अग्रेषित करने का एक नया तरीका है (1 अनंत लूप, सीए, यूएसए को लैट/लैंग एड्रेस जैसे पते को परिवर्तित करना)। More info on this is here.आईओएस 5 में मानचित्र पर सीएलप्लेसमार्क डालना 5

क्या किसी ने आगे MocMapView पर आगे geocoded CLPlacemark ऑब्जेक्ट डालने का प्रयास किया है? मेरे पास जियोकोडिंग के बाद एक CLPlacemark ऑब्जेक्ट है लेकिन इसमें कोई संकेत नहीं है कि इसे मानचित्र पर कैसे रखा जाए।

मैं किसी भी प्रकार की सहायता की सराहना करता हूं। Google अब तक कोई मदद नहीं है।

उत्तर

24

चयनित उत्तर के अतिरिक्त, आगे जियोकोडिंग के लिए मानचित्र दृश्य में एनोटेशन जोड़ने के लिए भी इस तरह से है। CLPlacemark ऑब्जेक्ट को सीधे एमकेप्लेसमार्क में डाला जा सकता है और मैपव्यू में जोड़ा जा सकता है। इस तरह:

MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:placemark]; 
[self.mapView addAnnotation:placemark]; 

यहाँ आगे जियोकोडिंग की एक पूरी उदाहरण है।

NSString *address = @"1 Infinite Loop, CA, USA"; 
CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 
    [geocoder geocodeAddressString:address 
       completionHandler:^(NSArray* placemarks, NSError* error){ 
        // Check for returned placemarks 
        if (placemarks && placemarks.count > 0) { 
         CLPlacemark *topResult = [placemarks objectAtIndex:0]; 
         // Create a MLPlacemark and add it to the map view 
         MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult]; 
         [self.mapView addAnnotation:placemark]; 
         [placemark release]; 
        } 
        [geocoder release]; 
       }]; 
+2

+1 एमकेप्लेसमार्क के बारे में भूल गए। – Anna

9

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

उदाहरण के लिए:

MKPointAnnotation *pa = [[MKPointAnnotation alloc] init]; 
pa.coordinate = placemark.location.coordinate; 
pa.title = ABCreateStringWithAddressDictionary(placemark.addressDictionary, YES); 
[mapView addAnnotation:pa]; 
[pa release]; //remove if using ARC 

तुम कुछ भी करने के लिए title आप स्थान-चिह्न, लेकिन एक संभावना से चाहते हैं, के रूप में उदाहरण में दिखाया गया सेट कर सकते हैं, पता पुस्तिका यूआई ढांचे का उपयोग करने के लिए से एक पते स्ट्रिंग उत्पन्न करने के लिए है स्थल चिह्न द्वारा प्रदान किया गया पता शब्दकोश।

+0

में धन्यवाद! वह बहुत मददगार था! – Stealth

+1

मुझे इस वर्ष (2011) डब्ल्यूडब्ल्यूडीसी से वीडियो के माध्यम से ऐसा करने का एक और तरीका भी मिला। बस एक fyi। – Stealth

+0

मैं ABCreateStringWithAddressDictionary का उपयोग करते समय अजीब छोटी छोटी मेमोरी लीक देख रहा हूं ... 2 प्रत्येक अवसर को 1 9 2 बाइट्स पर ले जाता है। क्या किसी और को यह समस्या है? – AndrewPK

0

तेज 3,0

let pm = placemarks! as [CLPlacemark] // this is Clpmacemark 
let placemark = MKPlacemark.init(placemark: pm) 
self.mapview.addAnnotation(placemark)