Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)

Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等),第1张

概述CoreLocation是iOS中一个提供设备定位的框架。通过这个框架可以实现定位处理,从而获取位置数据,比如经度、纬度、海拔信息等。   1,定位精度的设置 定位服务管理类CLLocationManager的desiredAccuracy属性表示精准度,有如下6种选择: kCLLocationAccuracyBestForNavigation :精度最高,一般用于导航 kCLLocationAc

CoreLocation是iOS中一个提供设备定位的框架。通过这个框架可以实现定位处理,从而获取位置数据,比如经度、纬度、海拔信息等。

1,定位精度的设置

定位服务管理类CLLocationManager的desiredAccuracy属性表示精准度,有如下6种选择:

kCLLocationAccuracyBestForNavigation:精度最高,一般用于导航
kCLLocationAccuracyBest: 精确度最佳
kCLLocationAccuracyNearestTenMeters:精确度10m以内
kCLLocationAccuracyHundredMeters:精确度100m以内
kCLLocationAccuracyKilometer:精确度1000m以内
kCLLocationAccuracyThreeKilometers:精确度3000m以内

2,位置管理器更新频率的设置

我们无法直接控制位置管理器更新的频率,但可使用位置管理器的distanceFilter属性(单位米)进行间接控制。

它指设备(水平或垂直)移动多少米后才将另一个更新发送给委托。定位要求的精度越高,distanceFilter属性的值越小,应用程序的耗电量就越大。

3,计算两个坐标间的距离

通过cclocation对象的distanceto方法,可以得到两个坐标间的距离,单位是米。

1

2

3

4

varcurrentLocation =CLLocation(latitude: 52.104526,longitude: 51.111151)

vartargetLocation =CLLocation(latitude: 52.105526,longitude: 51.141151)

vardistance:CLLocationdistance= currentLocation.distanceFromLocation(targetLocation)

println("两点间距离是:\(distance)")


4,下面通过一个样例演示如何获取设备相关的位置数据(经度,纬度,海拔,速度等信息)


(1)在 info.pList里加入定位描述(Value值为空也可以):

NSLocationWhenInUseDescription:允许在前台获取GPS的描述

NSLocationAlwaysUsageDescription:允许在后台获取GPS的描述


(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

importUIKit

importCoreLocation

classVIEwController:UIVIEwController,CLLocationManagerDelegate{

//定位管理器

letlocationManager:CLLocationManager=CLLocationManager()

@IBOutletweakvarlabel1:UILabel!

@IBOutletweakvarlabel2:UILabel!

@IBOutletweakvarlabel3:UILabel!

@IBOutletweakvarlabel4:UILabel!

@IBOutletweakvarlabel5:UILabel!

@IBOutletweakvarlabel6:UILabel!

@IBOutletweakvarlabel7:UILabel!

overrIDefuncvIEwDIDLoad() {

super.vIEwDIDLoad()

//设置定位服务管理器代理

locationManager.delegate =self

//设置定位进度

locationManager.desiredAccuracy = kCLLocationAccuracyBest

//更新距离

locationManager.distanceFilter = 100

////发送授权申请

locationManager.requestAlwaysAuthorization()

if(CLLocationManager.locationServicesEnabled())

{

//允许使用定位服务的话,开启定位服务更新

locationManager.startUpdatingLocation()

print("定位开始")

}

}

//定位改变执行,可以得到新位置、旧位置

funclocationManager(manager:CLLocationManager,dIDUpdateLocations locations: [CLLocation]) {

//获取最新的坐标

letcurrLocation: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

总结

以上是内存溢出为你收集整理的Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)全部内容,希望文章能够帮你解决Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1075313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存