本文主要实现效果是百度地图指针跟随设备移动产生自然移动的效果,主要用于地图中的指南针作用。实现较为简单,大神请自行绕道,谢谢!
一,导入CoreLocation;
二,设置指针图片
_imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow@2x.png"]];
_imageView.center = CGPointMake(160, 240);
[self.view addSubview:_imageView];
三,生成CLLocationManager,设置delegate
self.locationManager= [[CLLocationManageralloc]init];
_locationManager.delegate =self;
四,判定传感器是否可用
if ([CLLocationManagerheadingAvailable]) {
//设置精度
self.locationManager.desiredAccuracy =kCLLocationAccuracyBest;
//设置滤波器不工作(过滤器用于过滤更新信号,默认为1,这里我们使其不工作,即接受所有更新信号,达到最精准模式)
self.locationManager.headingFilter =kCLHeadingFilterNone;
//开始更新
[self.locationManagerstartUpdatingHeading];
}
五,实现CLLocationManagerDelegate方法
-(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
//每次要重置view的位置,才能保证图片每次偏转量正常,而不是叠加,指针方向正确。
self.imageView.transform =CGAffineTransformIdentity;
CGAffineTransform transform =CGAffineTransformMakeRotation(-1 *M_PI*newHeading.magneticHeading/180.0);
self.imageView.transform = transform;
}
via:Damon