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

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

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

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,下面通过一个样例演示如何获取设备相关的位置数据(经度,纬度,海拔,速度等信息)

  

(1)在 info.plist里加入定位描述(Value值为空也可以): 
NSLocationWhenInUseDescription :允许在前台获取GPS的描述 
NSLocationAlwaysUsageDescription :允许在后台获取GPS的描述 

(2)代码如下:

import UIKit
import CoreLocationclass 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

转载于:https://www.cnblogs.com/LiuLady12138/p/5048521.html

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

  1. 安卓开发入门gps获取定位经纬度海拔速度

    layout xml 文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xm ...

  2. Swift 使用CoreLocation获取定位与位置信息

    大多数情况下APP会在开启应用的时候获取当前的位置,所以我写在APPDelegate里 第一步 import CoreLocationvar locationManager = CLLocationM ...

  3. iOS swift 位置 定位 获取海拔

    我自己的另外一篇博客(推荐):ios swift 获取手机位置 定位 Swift - 使用CoreLocation实现定位(经纬度.海拔.速度.距离等)

  4. 使用CoreLocation进行定位(Swift版)

    使用CoreLocation进行定位(Swift版) 在应用开发中,很多情况需要我们获取到当前的位置和高度信息,方便搜索周边,查看周边相同应用等,一切与定位有关的都得使用CoreLocation库,而 ...

  5. IOS 使用CoreLocation实现定位(Swift版)

    1.配置Custom  IOS Target Prpperties文件 2.导入CoreLocation.framework 3.使用步骤  在使用的swift文件的开始导入头文件->" ...

  6. shineblink NEO-6M GPS模块获取经纬度/海拔/时间详解

    NEO-6M GPS模块获取经纬度/海拔/时间 一.本例程实现功能 二. GPS使用说明 三.接线图 五.完整代码 六.代码运行结果 七.坐标系转换(需注意): 一.本例程实现功能 通过NEO-6M ...

  7. 模拟器无法定位经纬度的问题

    模拟器无法定位经纬度的问题: 2014-11-24 20:25:22.987 simpleMapDemo[1560:60b] location failed:Error Domain=kCLError ...

  8. vue 微信公众号获取定位经纬度 腾讯地图逆地址解析为具体地址

    最近做项目需要用到 微信公众号获取定位,并将定位转换为具体地址的需求,找了挺多,最后整理下,分享给大家~ 我这里使用的是腾讯地图,也可以使用其他的如百度.高德等. 思路是,先使用微信开放文档的获取定位 ...

  9. HTML网页获取当前定位经纬度/地理位置定位/百度定位/高德定位

    需求描述 在HTML页面获取当前定位经纬度 代码 优先使用地理位置定位,定位失败时取百度定位,否则使用高德IP定位: <!-- 引入百度地图API(需申请百度地图开发者账号,创建秘钥使用) -- ...

最新文章

  1. jQuery-事件委托(基本概述+实例)
  2. 一个小栗子聊聊JAVA泛型基础
  3. 【linux】——linux ls命令参数及用法详解---linux显示目录内容命令
  4. UILable和UITextField的详细讲解
  5. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨5.35%
  6. Windows下Tuxedo的安装与配置-无数据库
  7. linux安装redis和mysql
  8. python中unicode编码表_python unicode 编码整理
  9. 什么是QCIF? CIF?2CIF?4CIF?DCIF?
  10. Mybatis的联合查询
  11. Ionic for Angular 环境搭建
  12. 台式计算机有哪些硬件,台式机包括什么
  13. android 126邮箱格式,如何在Android系统邮件应用程序中添加帐户(默认POP3)
  14. CREATE DATABASE 或 ALTER DATABASE 失败,因为结果数据库的累计大小将超出每 数据库 为 4096 MB 的
  15. pythyon爬虫实现12306查票
  16. java日期计算天数_用Java计算两个日期之间的天数
  17. Ubuntu 安装uwsgi出错
  18. 电商平台中的架构实践
  19. KEIL工程中汇编文件添加条件编译宏
  20. Scrum立会报告+燃尽图(Beta阶段第二周第五次)

热门文章

  1. 从搜索引擎到社交网络的艰难转变
  2. 艾伟:MOSS 2007 项目的开发步骤
  3. Oracle SQL 内置函数大全
  4. Python LDA主题模型实战
  5. 【正一专栏】内马尔请不要把球迷的爱当做你交易的筹码
  6. Python学习三——列表
  7. CentOS5.4下安装和配置Apache、PHP、MySql、PHPMyAdmin
  8. 计算机二级考试vb内容,计算机二级考试VB重点内容.doc
  9. 数据库连接池——C3P0:数据库连接池技术
  10. Sonic 开源移动端云真机测试平台 - windows系统下的sonic快速部署演示