swift学习笔记(七)(定位)

前端之家收集整理的这篇文章主要介绍了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
这样就可以编写定位代码并定位了,这样会有是否允许定位的提示

猜你在找的Swift相关文章