Yayozen

导航

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()
        
    }


}

 

posted on 2015-09-09 13:20  yayozen  阅读(225)  评论(0)    收藏  举报