Core Location 简述

Core Location可以利用三种技术来实现:GPS、蜂窝基站三角网定位(cell tower triangulation)和Wi-Fi定位服务(WPS),其中GPS是最精确的。

我们只用告诉Core Location我们想要的精度级别,它将从它可用的技术中决定哪种可以更好地满足你的需求。

为了与Core Location打交道,需要创建一个位置管理器实例,如下所示:

CLLocationManager *locationManager = [[CLLocationManageralloc]init];

这将创建一个实例,但它并没有马上开始工作。

设置委托和请求指定精度级别:

locationManager.desiredAccuracy =kCLLocationAccuracyBest;

这将指定最高精度级别,其他值还有:kCLLocationAccuracyNearestTenMeters、kCLLocationAccuracyHundredMeters、kCLLocationAccuracyKilometer和kCLLocationAccuracyThreeKilometers。

设置距离筛选器:

locationManager.distanceFilter  = 1000.0f;

将告知位置管理器直到iPhone已经从以前报告的位置移动至少1000米之后才通知其委托,重置使用kCLDistanceFilterNone。

启动位置管理器:

[locationManager startUpdatingLocation];

停止位置管理器:

[locationManager stopUpdatingLocation];

使用CLLocation获取纬度和经度:

CLLocationDegrees*latitude = theLocation.coordinate.latitude;

CLLocationDegrees *longitude = theLocation.coordinate.longitude;

另外,horizontalAccuracy属性描述以coordinate作为其中心的一个圆的半径。此值越大,位置就越不准确。

altitude属性能告诉你你在海平面以上还是以下多少米。

verticalAccuracy表示Core Location在其精确的海拔方面的准确程度。

CLLocation还有一个非常实用的方法,通过大圆计算获得两个CLLocation对象之间的距离:

CLLocationDistancedistance = [fromLocation distanceFromLocation:toLocation];

CLLocationManagerDelegate有两个委托方法,当更新位置的时候,将调用locationManager:didUpdateTolocation:fromLocation:方法。

当遇到错误的时候,调用locationManager:didFailWithError:方法。错误代码有kCLErrorDenied和kCLErrorLocationUnknow两种。前者通常表示访问拒绝(可能是由用户拒绝),并且应用程序之后都将无法访问Core Location。后者的错误一般可能是临时的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值