Core Location 是苹果提供的定位服务框架。我们可以使用它来获取设备的位置和区域信息。
使用 Core Location 的基本步骤:
- 添加定位服务使用说明(NSLocationUsageDescription)到 Info.plist。
- 创建 CLLocationManager 对象并设置其代理。
- 调用 locationManager.requestWhenInUseAuthorization() 向用户请求定位服务权限。
- 实现 CLLocationManagerDelegate 协议的方法来获取定位更新。
- 调用 locationManager.startUpdatingLocation() 方法开始更新位置。
- 获取 CLLocation 对象,它包含纬度、经度、海拔高度、航向等信息。
- 调用 locationManager.stopUpdatingLocation() 方法停止更新位置。
- (可选)使用 CLGeocoder 反Geo编码服务翻译位置坐标为地理位置信息。
下面是一个简单的 Core Location 示例:
swift
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last!
print("Latitude: \(location.coordinate.latitude)")
print("Longitude: \(location.coordinate.longitude)")
}
locationManager.stopUpdatingLocation()
let geocoder = CLGeocoder()
geocoder.reverseGeocodeLocation(location) { (placemarks, error) in
if let placemark = placemarks?.first {
print(placemark.name!)
print(placemark.subAdministrativeArea!)
print(placemark.Iso3CountryCode!)
}
}