博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS 定位服务
阅读量:4109 次
发布时间:2019-05-25

本文共 1336 字,大约阅读时间需要 4 分钟。

IOS中的core location提供了定位功能,能定位装置的当前坐标,同时能得到装置移动信息。因为对定位装置的轮询是很耗电的,所以最好只在非常必要的前提下启动。

其中,最重要的类是CLLocationManager,定位管理。

其定位有3种方式:

1,GPS,最精确的定位方式,貌似iphone1是不支持的。

2,蜂窝基站三角定位,这种定位在信号基站比较秘籍的城市比较准确。

3,Wifi,这种方式貌似是通过网络运营商的数据库得到的数据,在3种定位种最不精确

使用方式:

1,引入CoreLocation的包,一般的默认模板里是没有的,所以需要手动导入。

2,通过启动CLLocationManager来启动定位服务,因为定位信息是需要轮询的,而且对于程序来说是需要一定时间才会得到的,所以翠玉lcationManager的操作大多都给委托来完成。

加载locationManager的代码:

[plain] 
  1. CLLocationManager *locationManager = [[CLLocationManager alloc] init];//创建位置管理器  
  2.  locationManager.delegate=self;  
  3. locationManager.desiredAccuracy=kCLLocationAccuracyBest;  
  4. locationManager.distanceFilter=1000.0f;  
  5. //启动位置更新  
  6. [locationManager startUpdatingLocation];  
desiredAccuracy为设置定位的精度,可以设为最优,装置会自动用最精确的方式去定位。

distanceFilter是距离过滤器,为了减少对定位装置的轮询次数,位置的改变不会每次都去通知委托,而是在移动了足够的距离时才通知委托程序,它的单位是米,这里设置为至少移动1000再通知委托处理更新。

startUpdatingLocation就是启动定位管理了,一般来说,在不需要更新定位时最好关闭它,用stopUpdatingLocation,可以节省电量。

对于委托CLLocationManagerDelegate,最常用的方法是:

- (void)locationManager:(CLLocationManager *)manager   

    didUpdateToLocation:(CLLocation *)newLocation   
           fromLocation:(CLLocation *)oldLocation;

这个方法即定位改变时委托会执行的方法。

可以得到新位置,旧位置,CLLocation里面有经度纬度的坐标值,

同时CLLocation还有个属性horizontalAccuracy,用来得到水平上的精确度,它的大小就是定位精度的半径,单位为米。

如果值为-1,则说明此定位不可信。

另外委托还有一个常用方法是

- (void)locationManager:(CLLocationManager *)manager   

       didFailWithError:(NSError *)error ;

当定位出现错误时就会调用这个方法。

转载地址:http://pjosi.baihongyu.com/

你可能感兴趣的文章
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day12 集合
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
Day_15JavaSE 异常
查看>>
异常 Java学习Day_15
查看>>
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>