指南针的设置和使用

news/2024/12/29 14:54:58/

指南针小demo

(1)设置背景图片,设置指南针背景图.

    //背景图片UIImageView* backgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BackGroundPad.png"]];[self.view addSubview:backgroundImage];//创建指南针图片self.compassImageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"compass.png"]];self.compassImageView.center = CGPointMake(160 , 240);[self.view addSubview:self.compassImageView];


(2)初始化位置管理器

指南针的使用离不开位置管理器,需要使用CLLocationManager,

<pre name="code" class="objc">   //初始化locationManager并设置代理类self.locationManager = [[CLLocationManager alloc]init];self.locationManager.delegate = self;


 

如果设备的探测器正常开启,则进行指南针相关设置,否则弹出alertView,进行提示探测器无法使用.代码如下:

if ([CLLocationManager headingAvailable]) {//设置精度self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;//设置滤波器不工作self.locationManager.headingFilter =  kCLHeadingFilterNone;//开始更新[self.locationManager startUpdatingHeading];// [self.locationManager startUpdatingLocation];_jiaoDu = [[UILabel alloc] initWithFrame:CGRectMake(140, 320, 60, 30)];_jiaoDu.backgroundColor = [UIColor redColor];_fangXiang = [[UILabel alloc] initWithFrame:CGRectMake(140, 360, 60, 30)];_fangXiang.backgroundColor = [UIColor yellowColor];[self.view addSubview:_jiaoDu];[self.view addSubview:_fangXiang];}else{UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"提示" message:@"传感器不可用" delegate:nil cancelButtonTitle:@"返回" otherButtonTitles: nil];[alert show];}


(3)执行代理方法,实现实时显示数据和方向

//调用locationManager成员方法
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading{//重置view的位置self.compassImageView.transform = CGAffineTransformIdentity;CGAffineTransform transform = CGAffineTransformMakeRotation(-1 * M_PI*newHeading.magneticHeading/180.0);self.compassImageView.transform = transform;_jiaoDu.text = [NSString stringWithFormat:@"%0.1f°",newHeading.magneticHeading];_jiaoDu.textColor = [UIColor whiteColor];if ((newHeading.magneticHeading >= 0 && newHeading.magneticHeading <=22 )|| newHeading.magneticHeading > 337) {_fangXiang.text = @"北";// NSLog(@"____________北");}else if (newHeading.magneticHeading > 22 && newHeading.magneticHeading <=67){_fangXiang.text = @"东北";// NSLog(@"____________东北");}else if (newHeading.magneticHeading > 67 && newHeading.magneticHeading <=112){_fangXiang.text = @"东";// NSLog(@"____________东");} else if (newHeading.magneticHeading > 112 && newHeading.magneticHeading <=157) {_fangXiang.text = @"东南";// NSLog(@"____________东南");}else if (newHeading.magneticHeading > 157 && newHeading.magneticHeading <=202){_fangXiang.text = @"南";//NSLog(@"____________南");}else if (newHeading.magneticHeading > 202 && newHeading.magneticHeading <=247){_fangXiang.text = @"西南";//NSLog(@"____________西南");}else if (newHeading.magneticHeading > 247 && newHeading.magneticHeading <=292){_fangXiang.text = @"西";//  NSLog(@"____________西");}else{_fangXiang.text = @"西北";// NSLog(@"____________西北");}_fangXiang.textColor = [UIColor whiteColor];_fangXiang.textAlignment = 1;}

(4)程序调试能够正常使用.

备注:

   如果您确实需要使用Core Location框架,则务必控制在最小程度,且正确地配置位置服务。收集位置数据需要给主板上的接收装置上电,并向基站、Wi-Fi热点、或者GPS卫星查询,这个过程可能要花几秒钟的时间。此外,请求更高精度的位置数据可能需要让接收装置更长时间地处于打开状态,而长时间地打开这个硬件会耗尽设备的电池。如果位置信息不是频繁变化,通常可以先取得初始位置,然后每隔一段时间请求一次更新就可以了。如果您确实需要定期更新位置信息,也可以为位置服务设置一个最小的距离阈值,从而最小化代码必须处理的位置更新。

取得用户当前位置首先要CLLocationManager类的实例,并用期望的精度和阈值参数进行配置。开始接收通告则需要为该对象分配一个delegate,然后调用startUpdatingLocation方法来确定用户当前位置。当新的位置数据到来时,位置管理器会通知它的委托对象。如果位置更新通告已经发送完成,您也可以直接从CLLocationManager对象获取最新的位置数据,而不需要等待新的事件。



http://www.ppmy.cn/news/707128.html

相关文章

Android指南针应用编写

目录 概述 一、运行环境&#xff1a; 二、编码 三、结果 四、总结 概述 由于最近有个地磁项目的需要&#xff0c;重温多年Android知识&#xff0c;通过手机地磁传感器数据&#xff0c;编写了一个指南针App&#xff0c;同时支持&#xff0c;获取手机端各个传感器数据&#…

制作简单的指南针

/**** 指南针简单制作**/ public class CompassActivity extends BaseActivity {private SensorManager sensorManager;Bind(R.id.compass_img)ImageView compassImg;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setCont…

指南针的实现

1、在/res/drawable/目录下放入指南针的图片 2、main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:l…

指南针和陀螺仪

http://www.code4app.com/thread-9058-1-1.html

司空见惯 - 车载指南针拆解

我网上买了个车载指南针&#xff0c;贴在了车前挡风玻璃附近。开始贴在中间&#xff0c;结果指针不准&#xff0c;应该是车机的音响喇叭在中间有一个&#xff0c;喇叭里面有磁铁&#xff0c;所以影响了这个指南针。 然后就贴在了前挡风玻璃最左边&#xff0c;方向盘左边。 最近…

Android开发之指南针

Android开发之指南针 一、基于方向传感器1.效果图2.布局文件(activity_main)3.java文件(MainActivity) 二、基于加速度传感器和磁场传感器1.效果图2.布局文件(compass01)3.java文件(TypeTwoActivity) 三、资源下载 Android基于多种手机传感器开发指南针的项目 一、基于方向传感…

HTML5指南针

deviceOrientation & deviceMotion 以上为HTML5的提供的两种接口 摇一摇功能&#xff08;DeviceMotion&#xff09;重力感应方向控制/指南针&#xff08;DeviceOrientation&#xff09; 重力感应与罗盘 DeviceOrientation 当浏览器的Orientation发生变化时&#xff0c;触发…

指南针安卓demo

2016/05/12// ///by xbw/ /eclipse api21/ 指南针小demo&#xff0c;整理一下&#xff0c; package com.example.compass;import android.app.Activity; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import and…