高德地圖當(dāng)前位置圖標(biāo)旋轉(zhuǎn)功能實(shí)現(xiàn)

實(shí)現(xiàn)思路

1观蓄、添加高德地圖
- (void)creatMapView {
    _mapView = [[MAMapView alloc]initWithFrame:self.view.bounds];
    _mapView.delegate = self;
    _mapView.showsCompass = NO;
    _mapView.showsUserLocation = YES;
    _mapView.userTrackingMode = MAUserTrackingModeFollow;
    //是否自定義用戶位置精度圈
    _mapView.customizeUserLocationAccuracyCircleRepresentation = YES;
    [self.view addSubview:_mapView];
}
2、實(shí)現(xiàn)地圖添加大頭針的代理,設(shè)置當(dāng)前位置圖標(biāo)
- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation {
    //用戶當(dāng)前位置大頭針
    if ([annotation isKindOfClass:[MAUserLocation class]])
    {
        static NSString *kUserLocationStyleReuseIndetifier = @"userLocationStyleReuseIndetifier";
        
        MAAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:kUserLocationStyleReuseIndetifier];
        
        if (annotationView == nil)
        {
            annotationView = [[MAAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:kUserLocationStyleReuseIndetifier];
        }
        
        annotationView.canShowCallout = NO;
        annotationView.image = [UIImage imageNamed:@"heardImg_passenger_default"];
        annotationView.frame = CGRectMake(0, 0, 26, 26);
        annotationView.contentMode = UIViewContentModeScaleToFill;
        annotationView.layer.masksToBounds = YES;
        annotationView.tag = kUserHearderAnnotaionViewTag;
        
        return annotationView;
    }
    //其他大頭針
    else if ([annotation isKindOfClass:[MAPointAnnotation class]]) {
        
        
    }
    return nil;
}
3蚜锨、在地圖時(shí)時(shí)位置更新的方法里實(shí)現(xiàn)旋轉(zhuǎn)功能
- (void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation
{
    NSLog(@"%f,%f,%f",userLocation.heading.x,userLocation.heading.y,userLocation.heading.z);
    
    MAAnnotationView *hearderAnnotationView = [self.mapView viewWithTag:kUserHearderAnnotaionViewTag];
    if (hearderAnnotationView)
    {
        hearderAnnotationView.transform = CGAffineTransformIdentity;
        CGAffineTransform transform = CGAffineTransformMakeRotation(-M_PI*userLocation.heading.magneticHeading/180.0);
        hearderAnnotationView.transform = transform;
    }
}

全部代碼如下

#import "ViewController.h"
#import <AMapFoundationKit/AMapFoundationKit.h>
#import <MAMapKit/MAMapKit.h>

static const NSUInteger kUserHearderAnnotaionViewTag = 10000;

@interface ViewController ()<MAMapViewDelegate,CLLocationManagerDelegate>

@property (nonatomic, strong) MAMapView *mapView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    
    [self creatMapView];
}

- (void)creatMapView {
    _mapView = [[MAMapView alloc]initWithFrame:self.view.bounds];
    _mapView.delegate = self;
    _mapView.showsCompass = NO;
    _mapView.showsUserLocation = YES;
    _mapView.userTrackingMode = MAUserTrackingModeFollow;
    //是否自定義用戶位置精度圈
    _mapView.customizeUserLocationAccuracyCircleRepresentation = YES;
    [self.view addSubview:_mapView];
}

#pragma mark MAMapViewDelegate
- (void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation
{
    NSLog(@"%f,%f,%f",userLocation.heading.x,userLocation.heading.y,userLocation.heading.z);
    
    //通過hearderAnnotationView的tag值拿到當(dāng)前位置的annotationView
    MAAnnotationView *hearderAnnotationView = [self.mapView viewWithTag:kUserHearderAnnotaionViewTag];
    if (hearderAnnotationView)
    {
        hearderAnnotationView.transform = CGAffineTransformIdentity;
        CGAffineTransform transform = CGAffineTransformMakeRotation(-M_PI*userLocation.heading.magneticHeading/180.0);
        hearderAnnotationView.transform = transform;
    }
}

- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation {
    //用戶當(dāng)前位置大頭針
    if ([annotation isKindOfClass:[MAUserLocation class]])
    {
        static NSString *kUserLocationStyleReuseIndetifier = @"userLocationStyleReuseIndetifier";
        
        MAAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:kUserLocationStyleReuseIndetifier];
        
        if (annotationView == nil)
        {
            annotationView = [[MAAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:kUserLocationStyleReuseIndetifier];
        }
        
        annotationView.canShowCallout = NO;
        annotationView.image = [UIImage imageNamed:@"heardImg_passenger_default"];
        annotationView.frame = CGRectMake(0, 0, 26, 26);
        annotationView.contentMode = UIViewContentModeScaleToFill;
        annotationView.layer.masksToBounds = YES;
        //設(shè)置當(dāng)前位置大頭針annotationView的tag值
        annotationView.tag = kUserHearderAnnotaionViewTag;
        
        return annotationView;
    }
    //其他大頭針
    else if ([annotation isKindOfClass:[MAPointAnnotation class]]) {
        
        
    }
    return nil;
}
@end

最后

還有其他的實(shí)現(xiàn)方法,大家可以互相分享慢蜓,希望大家提出寶貴意見亚再。
gitHub地址https://github.com/Mexiang/GaoDeMapHeading

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市晨抡,隨后出現(xiàn)的幾起案子氛悬,更是在濱河造成了極大的恐慌,老刑警劉巖耘柱,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件如捅,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡调煎,警方通過查閱死者的電腦和手機(jī)镜遣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來士袄,“玉大人悲关,你說我怎么就攤上這事÷α” “怎么了寓辱?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赤拒。 經(jīng)常有香客問我秫筏,道長,這世上最難降的妖魔是什么挎挖? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任这敬,我火速辦了婚禮,結(jié)果婚禮上肋乍,老公的妹妹穿的比我還像新娘鹅颊。我一直安慰自己敷存,他們只是感情好墓造,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锚烦,像睡著了一般觅闽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涮俄,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天蛉拙,我揣著相機(jī)與錄音,去河邊找鬼彻亲。 笑死孕锄,一個(gè)胖子當(dāng)著我的面吹牛吮廉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畸肆,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼宦芦,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了轴脐?” 一聲冷哼從身側(cè)響起调卑,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎大咱,沒想到半個(gè)月后恬涧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碴巾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年溯捆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厦瓢。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡现使,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出旷痕,到底是詐尸還是另有隱情碳锈,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布欺抗,位于F島的核電站售碳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏绞呈。R本人自食惡果不足惜贸人,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望佃声。 院中可真熱鬧艺智,春花似錦、人聲如沸圾亏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽志鹃。三九已至夭问,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間曹铃,已是汗流浹背缰趋。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秘血。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓味抖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親灰粮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子非竿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,732評(píng)論 25 707
  • 出自http://my.oschina.net/are1OfBlog/blog/420034 摘要 現(xiàn)在很多社交、...
    JJO閱讀 4,124評(píng)論 4 19
  • http://www.cnblogs.com/kenshincui/p/4125570.html 摘要: 現(xiàn)在很多...
    大崔老師閱讀 3,275評(píng)論 1 2
  • 情商這個(gè)東西到底是什么谋竖?說不準(zhǔn)红柱,會(huì)不會(huì)為人處事?為人處事有什么標(biāo)準(zhǔn)蓖乘?怎么評(píng)判锤悄? 就比如今天一塊兒去面試,等通知嘉抒,晚...
    霧是成風(fēng)閱讀 192評(píng)論 0 0
  • 今天學(xué)習(xí)了會(huì)議設(shè)計(jì)些侍,原來會(huì)議也可以事先進(jìn)行設(shè)計(jì)的隶症。其實(shí),我們每個(gè)人都參加過大大小小很多次會(huì)議岗宣,有的人也主持或主導(dǎo)過...
    白云路閱讀 376評(píng)論 0 0