iOS開發(fā)之CoreLocaiton框架使用(指南針)

一、實(shí)現(xiàn)原理:

1.通過(guò)傳感器,獲取設(shè)備朝向
2.根據(jù)設(shè)備朝向反向旋轉(zhuǎn)"指南針"圖片

二、磁北角度? 真北角度:


磁北(magnetic north)是指南針?biāo)甘镜谋保@主要是由于地球的磁場(chǎng)兩極與地理上的南北兩極不重合,因此指南針指示的北為磁北而非真北,磁北會(huì)隨著時(shí)間而變化。

真北(True North, TN)是大家看地圖或者地球儀上所有經(jīng)線的起始點(diǎn),也叫地理北極。真正的北極點(diǎn)很難測(cè)量,要用到衛(wèi)星,所以我們?cè)谌粘I钪械貓D中用到的只是磁北。

磁北角度? 真北角度

三、實(shí)例代碼

1.準(zhǔn)備一張指南針的圖片(下面圖片可以使用)


指南針


2.導(dǎo)入CoreLocation框架以及對(duì)應(yīng)的主頭文件并且設(shè)置代理

3.懶加載創(chuàng)建CLLocationManager對(duì)象并設(shè)置代理

- (CLLocationManager *)lM

{

if (!_lM) {

_lM = [[CLLocationManager alloc] init];

_lM.delegate = self;

// 每隔多少度更新一次

_lM.headingFilter = 2;

}
return _lM;
}

4. 調(diào)用方法, 開始獲取設(shè)備朝向??

[self.locationMstartUpdatingHeading];

5. 在對(duì)應(yīng)的代理方法中獲取設(shè)備朝向信息

#pragma mark - CLLocationManagerDelegate
/**

*? 獲取到手機(jī)朝向時(shí)調(diào)用
*
*? @param manager? ? 位置管理者
*? @param newHeading 朝向?qū)ο?br>*/

-(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading

{
/**
*? CLHeading
*? magneticHeading : 磁北角度
*? trueHeading : 真北角度
*/

NSLog(@"%f", newHeading.magneticHeading);

CGFloat angle = newHeading.magneticHeading;

// 把角度轉(zhuǎn)弧度
CGFloat angleR = angle / 180.0 * M_PI;

// 旋轉(zhuǎn)圖片
[UIView animateWithDuration:0.25 animations:^{
self.compassView.transform = CGAffineTransformMakeRotation(-angleR);
}];
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容