如何使用Swift将String
地址转换为CLLocation
坐标?我还没有代码,我找了一个解决方案,但我还没找到任何人。
感谢。
答案 0 :(得分:57)
这很简单。
let address = "1 Infinite Loop, Cupertino, CA 95014"
let geoCoder = CLGeocoder()
geoCoder.geocodeAddressString(address) { (placemarks, error) in
guard
let placemarks = placemarks,
let location = placemarks.first?.location
else {
// handle no location found
return
}
// Use your location
}
您还需要添加和导入CoreLocation框架。
答案 1 :(得分:7)
你可以使用CLGeocoder,你可以将地址(字符串)转换为坐标,反之亦然,试试这个:
import CoreLocation
var geocoder = CLGeocoder()
geocoder.geocodeAddressString("your address") {
placemarks, error in
let placemark = placemarks?.first
let lat = placemark?.location?.coordinate.latitude
let lon = placemark?.location?.coordinate.longitude
print("Lat: \(lat), Lon: \(lon)")
}
答案 2 :(得分:3)
这有效
let geocoder = CLGeocoder()
let address = "8787 Snouffer School Rd, Montgomery Village, MD 20879"
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
print("Lat: \(coordinates.latitude) -- Long: \(coordinates.longitude)")
}
})
答案 3 :(得分:0)
这是我想出的返回CLLocationCoordinat2D
对象的方法:
func getLocation(from address: String, completion: @escaping (_ location: CLLocationCoordinate2D?)-> Void) {
let geocoder = CLGeocoder()
geocoder.geocodeAddressString(address) { (placemarks, error) in
guard let placemarks = placemarks,
let location = placemarks.first?.location?.coordinate else {
return
}
completion(location)
}
}
所以说我有这个地址:
let address = "Springfield, Illinois"
用法
getLocation(from: address) { location in
print("Location is", location.debugDescription)
// Location is Optional(__C.CLLocationCoordinate2D(latitude: 39.799372, longitude: -89.644458))
}
答案 4 :(得分:0)
Swift 5和Swift 5.1
import CoreLocation
var geocoder = CLGeocoder() geocoder.geocodeAddressString("your address") { placemarks, error in let placemark = placemarks?.first let lat = placemark?.location?.coordinate.latitude let lon = placemark?.location?.coordinate.longitude print("Lat: \(lat), Lon: \(lon)") }