Swift - 使用CoreLocation實現定位(經緯度、海拔、速度、距離等)

CoreLocation是iOS中一個提供設備定位的框架。經過這個框架能夠實現定位處理,從而獲取位置數據,好比經度、緯度、海拔信息等。html

 
1,定位精度的設置
定位服務管理類CLLocationManager的desiredAccuracy屬性表示精準度,有以下6種選擇:

kCLLocationAccuracyBestForNavigation :精度最高,通常用於導航
kCLLocationAccuracyBest : 精確度最佳
kCLLocationAccuracyNearestTenMeters :精確度10m之內
kCLLocationAccuracyHundredMeters :精確度100m之內
kCLLocationAccuracyKilometer :精確度1000m之內
kCLLocationAccuracyThreeKilometers :精確度3000m之內git

 
2,位置管理器更新頻率的設置
咱們沒法直接控制位置管理器更新的頻率,但可以使用位置管理器的distanceFilter屬性(單位米)進行間接控制。
它指設備(水平或垂直)移動多少米後纔將另外一個更新發送給委託。定位要求的精度越高,distanceFilter屬性的值越小,應用程序的耗電量就越大。
 
3,計算兩個座標間的距離
經過CCLocation對象的distanceTo方法,能夠獲得兩個座標間的距離,單位是米。

 

var currentLocation = CLLocation(latitude: 52.104526, longitude: 51.111151)
var targetLocation = CLLocation(latitude: 52.105526, longitude: 51.141151)
var distance:CLLocationDistance = currentLocation.distanceFromLocation(targetLocation)
println("兩點間距離是:\(distance)")

4,下面經過一個樣例演示如何獲取設備相關的位置數據(經度,緯度,海拔,速度等信息) swift

原文:Swift - 使用CoreLocation實現定位(經緯度、海拔、速度、距離等)   原文:Swift - 使用CoreLocation實現定位(經緯度、海拔、速度、距離等)
 
(1)在 info.plist里加入定位描述(Value值爲空也能夠): 
NSLocationWhenInUseDescription :容許在前臺獲取GPS的描述 
NSLocationAlwaysUsageDescription :容許在後臺獲取GPS的描述 
原文:Swift - 使用CoreLocation實現定位(經緯度、海拔、速度、距離等)

(2)代碼以下:
import UIKit
import CoreLocation
 
class ViewController: UIViewController, CLLocationManagerDelegate {
     
    //定位管理器
    let locationManager:CLLocationManager = CLLocationManager()
     
    @IBOutlet weak var label1: UILabel!
    @IBOutlet weak var label2: UILabel!
    @IBOutlet weak var label3: UILabel!
    @IBOutlet weak var label4: UILabel!
    @IBOutlet weak var label5: UILabel!
    @IBOutlet weak var label6: UILabel!
    @IBOutlet weak var label7: UILabel!
     
    override func viewDidLoad() {
        super.viewDidLoad()
         
        //設置定位服務管理器代理
        locationManager.delegate = self
        //設置定位進度
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        //更新距離
        locationManager.distanceFilter = 100
        ////發送受權申請
        locationManager.requestAlwaysAuthorization()
        if (CLLocationManager.locationServicesEnabled())
        {
            //容許使用定位服務的話,開啓定位服務更新
            locationManager.startUpdatingLocation()
            print("定位開始")
        }
    }
     
    //定位改變執行,能夠獲得新位置、舊位置
    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        //獲取最新的座標
        let currLocation:CLLocation = locations.last!
        label1.text = "經度:\(currLocation.coordinate.longitude)"
        //獲取緯度
        label2.text = "緯度:\(currLocation.coordinate.latitude)"
        //獲取海拔
        label3.text = "海拔:\(currLocation.altitude)"
        //獲取水平精度
        label4.text = "水平精度:\(currLocation.horizontalAccuracy)"
        //獲取垂直精度
        label5.text = "垂直精度:\(currLocation.verticalAccuracy)"
        //獲取方向
        label6.text = "方向:\(currLocation.course)"
        //獲取速度
        label7.text = "速度:\(currLocation.speed)"
    }
}

  


原文出自:www.hangge.com  轉載保留原文連接:http://www.hangge.com/blog/cache/detail_783.html框架

相關文章
相關標籤/搜索