iOS:地图笔记-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

iOS:地图笔记

简介:

地图笔记

01. CLLocation

--------------------------------------------------------

CLLocationManager 定位管理者

CLLocation 代表位置(经度/纬度/高度/速度/路线等)

CLHeading  代表移动方向

CLRegion   代表一个区域

>CLCircularRegion  圆形区域

>CLBeaconRegion 蓝牙信号区域

 

返回定位服务是否可用

[CLLocationManager locationServicesEnabled];

返回延迟定位更新是否可用

[CLLocationManager deferredLocationUpdatesAvailable];

返回重大位置改变监听是否可用

[CLLocationManager significantLocationChangeMonitoringAvailable];

返回是否支持磁力计算方向

[CLLocationManager headingAvailable];

返回蓝牙信号范围服务是否可用

[CLLocationManager isRangingAvailable];

 

--------------------------------------------------------

设置是否可以暂停定位来节省电池电量, YES不需要定位数据时自动暂停定位

// mgr.pausesLocationUpdatesAutomatically

 

--------------------------------------------------------

每隔多少米定位一次, 只有水平方向超过该值时才会重新定位

// mgr.distanceFilter = 100;

 

--------------------------------------------------------

定位精确度

// mgr.desiredAccuracy;

kCLDistanceFilterNone;

kCLLocationAccuracyBestForNavigation 导航级最佳精准

kCLLocationAccuracyBest; 最佳精准

kCLLocationAccuracyNearestTenMeters; 10米误差

kCLLocationAccuracyHundredMeters; 百米胡茬

kCLLocationAccuracyKilometer;  千米误差

kCLLocationAccuracyThreeKilometers; 3千米误差

 

--------------------------------------------------------

定位数据的用途

// mgr.activityType;

CLActivityTypeOther 作为普通用途

CLActivityTypeAutomotiveNavigation  作为车辆导航

CLActivityTypeFitness  作为不行

CLActivityTypeOtherNavigation 作为其它导航

 

--------------------------------------------------------

// CLLocation

location.coordinate; 坐标, 包含经纬度

location.altitude; 设备海拔高度 单位是米

location.course; 设置前进方向 0表示北 90东 180南 270西

location.horizontalAccuracy; 水平精准度

location.verticalAccuracy; 垂直精准度

location.timestamp; 定位信息返回的时间

location.speed; 设备移动速度 单位是米/秒, 适用于行车速度而不太适用于不行

/*

 可以设置模拟器模拟速度

 bicycle ride 骑车移动

 run 跑动

 freeway drive 高速公路驾车

 */

 

--------------------------------------------------------

// CLAuthorizationStatus

用户从未选择过权限

kCLAuthorizationStatusNotDetermined

无法使用定位服务,该状态用户无法改变

kCLAuthorizationStatusRestricted

用户拒绝该应用使用定位服务,或是定位服务总开关处于关闭状态

kCLAuthorizationStatusDenied

已经授权(废弃)

kCLAuthorizationStatusAuthorized

用户允许该程序无论何时都可以使用地理信息

kCLAuthorizationStatusAuthorizedAlways

用户同意程序在可见时使用地理位置

kCLAuthorizationStatusAuthorizedWhenInUse

 

--------------------------------------------------------

// 计算两个位置之间的距离, 单位是米

[newLocation distanceFromLocation:self.prevLocation];

 

--------------------------------------------------------

获取方向信息不会提示用户(不需要授权), 因为不会泄露隐私

// [self.mgr startUpdatingHeading];

 

magneticHeading 设备与磁北的相对角度

trueHeading 设置与真北的相对角度, 必须和定位一起使用, iOS需要设置的位置来计算真北

真北始终指向地理北极点

磁北对应随着时间变化的地球磁场北极

 

// 牛逼的地方

116.958776,36.721199

 

 

--------------------------------------------------------

// 错误:使用CoreLocation获取地理位置信息,报错

Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"

 

解决方法:

1.确定模拟器(手机)已经联网并且允许程序获取地理位置

2.重置地理位置服务或者网络服务

 

PS:如果是模拟器就果断直接重置模拟器吧  IOS Simulator - Reset Content and Settings..。

 

 

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/5025630.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: