[iOS学习]关于定位的基础知识-CoreLocation框架

关于定位

介绍

The Core Location framework lets you determine the current location or heading associated with a device. 
The framework uses the available hardware to determine the user’s position and heading. 
You use the classes and protocols in this framework to configure and schedule the delivery of location and heading events. 
You can also use it to define geographic regions and monitor when the user crosses the boundaries of those regions. 
In iOS, you can also define a region around a Bluetooth beacon.

CoreLocation框架使你可以通过apple设备来确定当前的位置或者方向。这个框架使用apple设备上的硬件来确定用户的位置和方向。你可以使用框架里面的类和协议来计划和配置关于位置信息的事件。你也可以使用这个框架来判断用户是否到达或者跨越某个范围。在iOS中,你也可以通过蓝牙来定义一个范围。

以上出自苹果的官方文档介绍 文档地址

通过上述的介绍我们可以知道,想要使用定位功能可以使用CoreLocation框架

功能

1、关于CoreLocation框架的功能

1.基础定位

2.地理位置编码反编码

    编码:把地名(文字)转换为地理位置(位置参数)

    反编码:把地理位置转换为地名

2、在apple更新iOS8&iOS9之后的改变

iOS8:

(1)必须填写请求使用定位服务的目的

1.NSLocationAlwaysUsageDescription 当需要一直使用定位服务时的描述

2.NSLocationWhenInUseUsageDescription当需要使用定位服务的描述

3.这些描述写在info.plist文件里 内容必须与请求授权时填写的一致

4.如果不在info.plist添加描述,就不能使用定位功能,并且无提示信息

(2)需要请求用户授权

1.requestAlwaysAuthorization请求所有状态下的定位权限

2.requestWhenInUseAuthorization请求使用状态下的定位权限

3.如果请求和描述不匹配,不能使用定位功能

注意:请求与描述需要匹配,如果两者不匹配,请求不到数据  授权弹出框的提示内容必填。

iOS9:

按home键进入后台 如果需要继续定位

1.需要在info.plist文件里面需要添加Required background modes数组,在数组里面第一个元素的值的位置需要添加App registers for location updates

如果不添加这个值 在后台使用定位服务时 不会给出提示 程序会直接崩溃

2.还需要设置CLLoactionManager对象的allowsBackgroundLocationUpdates的值为YES

只有当满足这两个要求时 才可以在后台使用定位服务

3、使用
在使用之前,我们需要了解一下使用定位服务所需的相关类和其它一些数据的数据类型

相关的类

CLBeacon 类表示区域监测期间遇到的iBeacon基站。

CLFloor 对象指定的建筑的层的用户所处的位置。

CLGeocoder 类用于地理位置坐标与具体地理位置文字之间的转换。

CLHeading 对象包含CLLocationManager 对象的朝向数据。

CLLocation 对象表示由一个 CLLocationManager 对象生成的位置数据。

CLLocationManager 类是应用程序的位置和朝向相关的事件的管理者。

CLPlacemark 对象存储确定的位置的文字描述。

CLRegion 类定义一个抽象的区域范围,可以跟踪。

CLBeaconRegion 对象定义基于设备的蓝牙指路明灯,而不是一个地理位置接近的区域类型。

CLCircularRegion 类定义的位置和地界为圆形的地理区域。

CLVisit 保存用户到达过的景点

CLLocationManagerDelegate 代理方法,定义了从CLLocationManager对象获取位置和方向信息的方法


相关的数据类型

CLLocationAccuracy 表示定位的精确度,单位是米

CLLocationCoordinate2D 一个表示地理坐标的结构体

CLLocationDegrees 经度或纬度的度值

CLLocationDirection 表示相对于正北方向的角度值

CLLocationDistance 表示位置变化的远近,单位是米

CLLocationSpeed表示设备移动的速度,单位是m/s

具体使用

1.导入系统框架CoreLocation

2.检查用户是否在设置中打开了定位服务

3.初始化定位对象

    <1>locationServicesEnabled判断是否打开位置服务功能

    <2>distanceFilter设置多少米更新一次

    <3>desiredAccuracy设置定位的精准度

4.在info中添加描述使用定位的目的,并向用户申请授权

5.挂上代理 并实现代理方法

6.开始定位

7.(可选)如果需要使用后台定位服务需要在infoplist中添加 并打开相关属性设置
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值