swift 定位
iOS 8 及以上需要在info.plist文件中添加下面两个属性
NSLocationWhenInUseUsageDescription 使用应用期间
NSLocationAlwaysUsageDescription 始终



import UIKit
import CoreLocation //系统定位包
class ViewController: UIViewController,CLLocationManagerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
getCurrentLocation()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//CodeStart
/// 定位对象
let locationManager = CLLocationManager()
/// 当前所在城市(默认空)
var currentCity = ""
/**
定位获取所在城市
*/
func getCurrentLocation(){
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.delegate = self
if(UIDevice.currentDevice().systemVersion>="8.0"){
//locationManager.requestAlwaysAuthorization()
locationManager.requestWhenInUseAuthorization()
}
locationManager.startUpdatingLocation()
}
/**
定位失败
*/
func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
println(error.code)
}
/**
定位完成调用
*/
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
let cloc = locations.last as! CLLocation
let geoCoder = CLGeocoder()
var error = NSError()
geoCoder.reverseGeocodeLocation(cloc, completionHandler: { (placeMarks:[AnyObject]!, error:NSError!) -> Void in
if error == nil {
var placeMark: AnyObject = placeMarks[0]
var locationInfo:Dictionary = placeMark.addressDictionary
var locationCity = locationInfo["State"] as! String
if self.currentCity != locationCity{
self.currentCity = locationCity
println("当前定位城市:\(self.currentCity)")
}
}
})
manager.stopUpdatingLocation()
}
}
浙公网安备 33010602011771号