2014-07-11 7 views
16

ऑब्जेक्टिव-सी में इस कोड को ठीक काम करता है एक पते प्लॉट करने के लिए और यह देशांतर पाता है और अक्षांश निर्देशांक:मैं स्विफ्ट में पते कैसे लगा सकता हूं, पते को देशांतर और अक्षांश निर्देशांक में परिवर्तित कर सकता हूं?

 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]; 
      }]; 

मैं कैसे स्विफ्ट के साथ ऐसा करने पर दिनों के लिए खोज की है ?! क्या कोई मुझे सही दिशा में रास्ता दिखा सकता है? क्या आप समझा सकते हैं कि उपयोगकर्ता को काम करने के लिए इंटरनेट कनेक्शन की आवश्यकता है या नहीं। क्षमा करें अगर ये प्रश्न थोड़ा बुनियादी लगता है, लेकिन मैं इसके लिए काफी नया हूं और हर दिन सीख रहा हूं।

मैं समझता हूँ कि मैं इस कोड का उपयोग करने के लिए है कि है, लेकिन लागू करने के लिए एक तरह से नहीं मिल सकता है यह

func geocodeAddressString(_ addressString: String!, 
    completionHandler completionHandler: CLGeocodeCompletionHandler!) 

उत्तर

27
कुछ

प्रयास करें की तरह

var address = "1 Infinite Loop, CA, USA" 
var geocoder = CLGeocoder() 
geocoder.geocodeAddressString(address, {(placemarks: [AnyObject]!, error: NSError!) -> Void in 
    if let placemark = placemarks?[0] as? CLPlacemark { 
     self.mapView.addAnnotation(MKPlacemark(placemark: placemark)) 
    } 
}) 
+0

उत्तर के लिए धन्यवाद, लेकिन वें ई स्थलचिह्न: [AnyObject]! एक त्रुटि देता है। @kviksilver – agf119105

+1

साथ कि लाइन बदलें: geocoder.geocodeAddressString (पता, {(स्थान-चिह्न: AnyObject [] !, त्रुटि: NSError) -> में शून्य आप बीटा चला रहे हैं <3 – kviksilver

+0

कमाल है, धन्यवाद है कि काम करता है !! – agf119105

3
var address = "1 Infinite Loop, CA, USA" 
var geocoder = CLGeocoder()  

geocoder.geocodeAddressString(address) { 
    if let placemarks = $0 { 
     println(placemarks) 
    } else { 
     println($1) 
    } 
} 
+0

आपको वास्तव में लाइन एंडिंग का उपयोग करने पर विचार करना चाहिए; ' – davidkonrad

+0

@MirekE उत्तर के लिए धन्यवाद, लेकिन जब यह चलता है, तो यह एक त्रुटि देता है और मानचित्र पर कुछ भी प्लॉट नहीं किया जाता है – agf119105

38

XCode 9 & स्विफ्ट 3:

import CoreLocation 

let address = "1 Infinite Loop, CA, USA" 
let geocoder = CLGeocoder() 

geocoder.geocodeAddressString(address, completionHandler: {(placemarks, error) -> Void in 
    if((error) != nil){ 
     print("Error", error) 
    } 
    if let placemark = placemarks?.first { 
     let coordinates:CLLocationCoordinate2D = placemark.location!.coordinate 
     } 
    }) 
संबंधित मुद्दे