CoreLocation框架--监测方向/地磁传感器
方向监测:
通过磁力计获取方向(heading)
创建CLLocationManager对象,遵守CLLocationManagerDelegate协议。
[CLLocationManager headingAvailable];判断手机是否支持磁力计。
[self.locationManager startUpdatingHeading];开始监测方向。
重写方法:
-(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading; -(BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager;
//return yes 方向校准仪
CLHeading拥有的属性:
typedef double CLLocationDirection;
@property(readonly, nonatomic) CLLocationDirection magneticHeading;
//表示与地磁北极的夹角
//0度代表指向地磁北极 90度向东 180向南 270向西
//若headingAccuracy属性的值为负 则该属性值不可信
@property(readonly, nonatomic) CLLocationDirection trueHeading;
//表示与地理北极的夹角
//0度代表指向地磁北极 90度向东 180向南 270向西 负值表示该属性未获得
//用户正持面向手机时,手机顶端指向的方向定义为手机指向的方向。(portrait mode)
@property(readonly, nonatomic) CLLocationDirection headingAccuracy;
//magneticHeading的值与真实地磁北极的偏移角度,该值越小则精确度越高
//该值为负时不可用,未校准方向或有强干扰源时会发生
@property(readonly, nonatomic, copy) NSDate* timestamp;
//监测方向时的时间戳
@property(nonatomic, readonly, copy) NSString* description;
//方向监测的详细信息生成的字符串
typedef double CLHeadingComponentValue; //磁场强度 单位是微特斯拉
@property(readonly, nonatomic) CLHeadingComponentValue x; //磁场x轴分量强度
@property(readonly, nonatomic) CLHeadingComponentValue y; //磁场y轴分量强度
@property(readonly, nonatomic) CLHeadingComponentValue z; //磁场z轴分量强度
CLLocationManager中
typedef double CLLocationDegrees;
@property(assign, nonatomic) CLLocationDegrees headingFilter;
//单位为角度 可以过滤监测值 当改变超过设定角度时才触发代理