objective c - obtener - ¿Cómo puedo trazar direcciones en Swift, convirtiendo la dirección en coordenadas de longitud y latitud?
lector de coordenadas (3)
En Objective-C, este código funciona bien para trazar una dirección y encuentra las coordenadas de longitud y latitud:
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];
}];
¡He estado buscando por días sobre cómo hacer esto con Swift? ¿Podría alguien apuntarme en la dirección correcta? ¿Podría explicar si un usuario necesita una conexión a Internet para que esto funcione? Lo siento si estas preguntas suenan un poco básicas, pero soy bastante nuevo en esto y aprendo todos los días.
Entiendo que tengo que usar este código, pero no puedo encontrar una manera de implementarlo
func geocodeAddressString(_ addressString: String!,
completionHandler completionHandler: CLGeocodeCompletionHandler!)
Intenta algo como
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))
}
})
XCode 9 y 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
}
})
var address = "1 Infinite Loop, CA, USA"
var geocoder = CLGeocoder()
geocoder.geocodeAddressString(address) {
if let placemarks = $0 {
println(placemarks)
} else {
println($1)
}
}