将地址转换为swift坐标

Pau*_*eau 12 core-location coordinates ios swift

如何将String地址转换为CLLocationSwift的坐标?我还没有代码,我找了一个解决方案,但我还没找到任何人.

谢谢.

nag*_*rrr 64

这很简单.

    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
    }
Run Code Online (Sandbox Code Playgroud)

您还需要添加和导入CoreLocation框架.

  • 我在哪里使用“位置”变量? (3认同)

Gre*_*reg 8

你可以使用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)")
}
Run Code Online (Sandbox Code Playgroud)


Adr*_*ian 7

这是我想出的返回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 {
            completion(nil)
            return
        }
        completion(location)
    }
}
Run Code Online (Sandbox Code Playgroud)

所以假设我有这个地址:

let address = "Springfield, Illinois"
Run Code Online (Sandbox Code Playgroud)

用法

getLocation(from: address) { location in
    print("Location is", location.debugDescription)
    // Location is Optional(__C.CLLocationCoordinate2D(latitude: 39.799372, longitude: -89.644458))

}
Run Code Online (Sandbox Code Playgroud)

  • 您应该始终调用完成处理程序。如果没有找到位置,则调用“completion(nil)”。 (2认同)

小智 6

斯威夫特 5 和斯威夫特 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)") 
}
Run Code Online (Sandbox Code Playgroud)


Azh*_*har 5

这有效

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)")
    }
})
Run Code Online (Sandbox Code Playgroud)