iOS 8以後使用Core Location進行定位
-
iOS 8以後再使用Core Location前需要呼叫下面兩個方法其中之一
- 始終允許訪問位置資訊
requestAlwaysAuthorization()
- 使用應用程式期間允許訪問位置資料
requestWhenInUseAuthorization()
- 始終允許訪問位置資訊
-
在Info.plist中新增兩個String型別的NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription
CLLocationManager
let manager = CLLocationManager()
// 始終訪問位置資訊
manager.requestAlwaysAuthorization()
// 在App使用期間訪問位置資訊
// manager.requestWhenInUseAuthorization()
manager.delegate = self
manager.distanceFilter = 10.0 // 最少移動多少距離才更新一次
manager.desiredAccuracy = kCLLocationAccuracyKilometer // 定位精度
manager.startUpdatingLocation() // 開始定位
複製程式碼
獲取位置資訊
獲取位置資訊通過CLLocationManagerDelegate的協議方法來進行更新,一般會使用locationManager(manager:didUpdateLocations:)
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let currentLocation: CLLocation = locations.last {
print("Current latitude: \(currentLocation.coordinate.latitude), longitude:\(currentLocation.coordinate.longitude)")
// 解碼出相關資訊
let clGeocoder = CLGeocoder()
clGeocoder.reverseGeocodeLocation(currentLocation, completionHandler: { (placemarks, error) in
if let mark = placemarks?.first {
if let dic = mark.addressDictionary {
let city = dic["City"] as? String
let state = dic["State"] as? String
self.locationLabel.text = state! + city!
}
}
})
}
manager.stopUpdatingLocation()
}
複製程式碼