Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)
定位 实现 swift 速度 距离 经纬度 使用
2023-09-11 14:17:59 时间
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
|
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,下面通过一个样例演示如何获取设备相关的位置数据(经度,纬度,海拔,速度等信息)
(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
|
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)" } } |
相关文章
- 查找和定位Android应用的按钮点击事件的代码位置基于Xposed Hook实现
- UWA 新功能| 多线程模式下也能定位堆内存问题了!
- 声音定位的距离误差到底有多高?
- taro 实现调用 腾讯地图 实现定位效果
- TOA定位算法的FPGA实现
- 无线定位算法源码
- Vue - 实现锚点跳转定位到指定页面位置功能 / Anchor 页面添加锚点(仅需一个函数代码超级简洁)
- 阿里 Goldeneye 四个环节落地智能监控:预测、检测、报警及定位
- Web自动化-Selenium自动化测试-5-复杂定位方式xpath CSS
- 微信小程序 - 相对定位和绝对定位 - 相对路径和绝对路径
- Xamarin Essentials教程地理定位Geolocation
- 《21天学通HTML+CSS+JavaScript Web开发(第7版)》——1.4 统一资源定位符
- 基于C#实现中央定位服务器的 P2P 网络聊天系统【100010194】
- Android ListView快速定位(一)
- 【毕业设计_课程设计】基于颜色和BP神经网络的车牌定位和识别系统(源码+论文)
- element-ui tree实现选中、高亮、定位的功能记录贴
- Android 编程 高德地图 (实现显示地图以及定位功能)
- INS/GNSS组合导航(十)松耦合捷联车载定位解算示例
- 实现地图实时定位,拯救“路痴”
- RTKLIB专题学习(七)---精密单点定位实现初识(一)
- RTKLIB专题学习(四)---单点定位实现初识(一)
- GNSS说第(五)讲---利用python实现RTKLIB中的定位误差收敛曲线绘制功能
- 免费开源的高精度OCR文本提取,支持 100 多种语言、自动文本定位和脚本检测,几行代码即可实现离线使用(附源码)
- Java 调用Python+Opencv实现图片定位
- 【WPF】弹窗定位、弹窗关闭后再打开的报错
- 分享一个可以自定义搜索定位的地图