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

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

 

1,定位精度的設置git

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

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

 

2,位置管理器更新頻率的設置spa

咱們沒法直接控制位置管理器更新的頻率,但可以使用位置管理器的distanceFilter屬性(單位米)進行間接控制。代理

它指設備(水平或垂直)移動多少米後纔將另外一個更新發送給委託。定位要求的精度越高,distanceFilter屬性的值越小,應用程序的耗電量就越大。rest

 

3,計算兩個座標間的距離code

經過CCLocation對象的distanceTo方法,能夠獲得兩個座標間的距離,單位是米。htm

1對象

2

3

4

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 - 使用CoreLocation實現定位(經緯度、海拔、速度、距離等)  原文:Swift - 使用CoreLocation實現定位(經緯度、海拔、速度、距離等)
 

(1)在 info.plist里加入定位描述(Value值爲空也能夠): 

NSLocationWhenInUseDescription :容許在前臺獲取GPS的描述 

NSLocationAlwaysUsageDescription :容許在後臺獲取GPS的描述 

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


(2)代碼以下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

import UIKit

import CoreLocation

 

class ViewControllerUIViewControllerCLLocationManagerDelegate {

     

    //定位管理器

    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

相關文章
相關標籤/搜索