iOS 地图和定位功能 Core Location

苹果在中国的地图服务商是高德
1:定位使用的生活场景
在移动互联网时代,移动app能解决用户的不少生活杂事,好比导航:去任意陌生的地方
周边:找餐馆、找酒店、找银行、找电影院
在上述应用中,都用到了地图和定位功能
 
2:iOS定位依赖的框架
在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发
Map Kit :用于地图展现(比较重量级)
Core Location :用于地理定位
Map Kit的定位是基于Core Location的
 
iOS定位热门术语:
LBS :Location Based Service
SoLoMo :Social Local Mobile(索罗门)
 
3:CoreLocation框架使用
CoreLocation框架使用前提
导入框架
导入主头文件
#import <CoreLocation/CoreLocation.h>
CoreLocation框架使用须知:
CoreLocation框架中全部数据类型的前缀都是CL
CoreLocation中使用CLLocationManager对象来作用户定位
 
4:CLLocationManager的经常使用操做
开始用户定位
- (void)startUpdatingLocation;
 
中止用户定位
- (void) stopUpdatingLocation;
当调用了startUpdatingLocation方法后,就开始不断地定位用户的位置,中途会频繁地调用代理的下面方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
locations参数里面装着CLLocation对象
 
CLLocation用来表示某个位置的地理信息,好比经纬度、海拔等等
@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;
经纬度
 
@property(readonly, nonatomic) CLLocationDistance altitude;
海拔
 
@property(readonly, nonatomic) CLLocationDirection course;
路线,航向(取值范围是0.0° ~ 359.9°,0.0°表明真北方向)
 
@property(readonly, nonatomic) CLLocationSpeed speed;
行走速度(单位是m/s)
 
用- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location方法能够计算2个位置之间的距离
 
@property(assign, nonatomic) CLLocationDistance distanceFilter;
每隔多少米定位一次
 
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;
定位精确度(越精确就越耗电)
 
CLLocationCoordinate2D是一个用来表示经纬度的结构体,定义以下

typedef struct {git

        CLLocationDegrees latitude; // 纬度app

        CLLocationDegrees longitude; // 经度框架

} CLLocationCoordinate2D;函数

通常用CLLocationCoordinate2DMake函数来建立CLLocationCoordinate2D
 
5:用户隐私的保护
从iOS 6开始,苹果在保护用户隐私方面作了很大的增强,如下操做都必须通过用户批准受权
要想得到用户的位置
想访问用户的通信录、日历、相机、相册等等
当想访问用户的隐私信息时,系统会自动弹出一个对话框让用户受权
 
5.1
开发者能够在后缀名为Info.plist的文件中
设置NSLocationUsageDescription说明定位的目的(Privacy - Location Usage Description)
一旦用户选择了“Don’t Allow”,意味着你的应用之后就没法使用定位功能
为了严谨起见,最好在使用定位功能以前判断当前应用的定位功能是否可用
CLLocationManager有个类方法能够判断当前应用的定位功能是否可用
+ (BOOL)locationServicesEnabled;
相关文章
相关标签/搜索