swift学习笔记(七)(定位)
代码如下: import UIKit import CoreLocation class ViewController: UIViewController,CLLocationManagerDelegate { @IBOutlet weak var locationLabel: UILabel! // sb里的定位显示label
var locationManager: CLLocationManager!
override func viewDidLoad() { super.viewDidLoad() }
override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent }
@IBAction func myLocationButtonDidTouch(sender: AnyObject) { // sb里的定位触发按钮
locationManager = CLLocationManager() locationManager.delegate = self locationManager.desiredAccuracy = kCLLocationAccuracyBest locationManager.requestAlwaysAuthorization() locationManager.startUpdatingLocation()
}
override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }
func locationManager(manager: CLLocationManager,didFailWithError error: NSError) {
self.locationLabel.text = "Error while updating location " + error.localizedDescription
}
func locationManager(manager: CLLocationManager,didUpdateLocations locations: [CLLocation]) { CLGeocoder().reverseGeocodeLocation(manager.location!,completionHandler: {(placemarks,error)->Void in
if (error != nil) { self.locationLabel.text = "Reverse geocoder failed with error" + error!.localizedDescription return }
if placemarks!.count > 0 { let pm = placemarks![0] self.displayLocationInfo(pm) } else { self.locationLabel.text = "Problem with the data received from geocoder" } }) }
func displayLocationInfo(placemark: CLPlacemark?) { if let containsPlacemark = placemark { //stop updating location to save battery life locationManager.stopUpdatingLocation()
let locality = (containsPlacemark.locality != nil) ? containsPlacemark.locality : "" let postalCode = (containsPlacemark.postalCode != nil) ? containsPlacemark.postalCode : "" let administrativeArea = (containsPlacemark.administrativeArea != nil) ? containsPlacemark.administrativeArea : "" let country = (containsPlacemark.country != nil) ? containsPlacemark.country : ""
self.locationLabel.text = locality! + postalCode! + administrativeArea! + country! }
} }
1.定位要用到coreLocation.framework,记得在info.plist中添加键值如下:
NSLocationAlwaysUsageDescription String where are you
NSLocationWhenInUseUsageDescription String Allow to use location and can send it to me
这样就可以编写定位代码并定位了,这样会有是否允许定位的提示
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |