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

相关文章
相关标签/搜索