2014-07-11 16 views
16

bu kod bir adres çizmek için çalışıyor ve boylam bulur ve enlem koordinatları: Ben Swift ile bunun nasıl günlerce arama edilmiştirSwift'deki adresleri, enlem ve boylam koordinatlarına nasıl dönüştürürüm? Objective-C ise

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

?! Biri beni doğru noktaya yönlendirebilir mi? Kullanıcının çalışması için bir internet bağlantısına ihtiyaç duyup duymadığını açıklar mısınız? Maalesef bu sorular biraz basit geliyorsa da, bu konuda oldukça yeniyim ve her gün öğreniyorum.

ben bu kodu kullanmak zorunda olduğunu anlıyoruz, ancak uygulamanın bir yolunu bulamazsa bunun

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

cevap

27

deneyin gibi bir şey

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

Cevabınız için teşekkürler, ancak e yer işaretleri: [AnyObject]! bir hata verir. @kviksilver – agf119105

+1

ile o çizgiyi değiştirin: geocoder.geocodeAddressString (adres, {(yer işaretleri: AnyObject [] !, hatası:! NSError) - Eğer işler <3 – kviksilver

+0

Şaşırtıcı, teşekkür beta yılında Void çalıştıran> eğer !! ! – 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

satır sonlarını kullanmayı düşünmelisiniz ';' – davidkonrad

+0

@MirekE Cevabınız için teşekkürler, ancak çalıştığında, bir hata veriyor ve harita üzerinde hiçbir şey çizilmiyor – agf119105

38

XCode 9 & Swift 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 
     } 
    }) 
İlgili konular