iOS GPS定位开发基础知识

OS -GPS定位服务和地图应用是两套完全不同的API。

iOS 7 的 四种定位服务

  • GPS卫星  优点最为准确,缺点 耗电量大,不能遮挡(建筑物内不行)
  • WI-FI通过WIFI路由器定位 优点比较省电,经济实惠
  • 蜂窝式移动电话基站。通过移动运营商基站定位 误差比较大
  • iBeacon微定位。 苹果公司自己研发的iBeacon,使用低功耗的蓝牙。
iOS 定位服务开发不需要指定定位途径(除了微定位外)ios 会根据设备的情况采用最佳方案,如果能接受GPS优先采用GPS定位,次之是Wi-Fi ,最后是蜂窝式基站定位;

iOS 7 定位服务使用Core Location框架

  • CLLocationManager 用于定位管理的类,他提供位置信息和高度信息,也可以监控设备进入或者离开某个区域,还可以获得设备的运行方向;
  • CLLocationManagerDelegate。CLLocationManager类的委托协议;
  • CLLocation 封装了位置和高度信息;
第一次请求定位信息时,系统会提示用户是否允许开启定位服务。

?
1
2
3
4
5
6
7
8
- ( void )viewDidLoad
{
     [super viewDidLoad];
     locationManager = [[CLLocationManager alloc]init];
     locationManager.delegate = self;
     locationManager.desiredAccuracy = kCLLocationAccuracyBest;
     locationManager.distanceFilter = 1000.f;
}
初始化一个定位管理器 设置好代理 

desireAccuracy这个属性用来设置经度的

?
1
2
3
4
5
kCLLocationAccuracyBest; 电池供电的最高精度
kCLLocationAccuracyNearestTenMeters; 精确到10米
kCLLocationAccuracyHundredMeters;精确到100米
kCLLocationAccuracyKilometer;精确到1000米
kCLLocationAccuracyThreeKilometers;精确到3000米

经度越高获得信息时间越短。耗电越多。

distabceFilter 属性定义了设备移动后获得位置信息的最小距离,单位是米;

设置距离筛选器distanceFilter,表示设备至少移动1000米,才通知委托更新

在视图展现的时候分别开启和关闭定位服务

?
1
2
3
4
5
6
7
8
9
10
- ( void )viewWillAppear:( BOOL )animated
{
     [super viewWillAppear:animated];
     [locationManager startUpdatingLocation];
}
- ( void )viewWillDisappear:( BOOL )animated
{
     [super viewWillDisappear:animated];
     [locationManager stopUpdatingLocation];
}

当获取位置成功的时候进行调用代理来获取数据

?
1
2
3
4
5
6
7
- ( void )locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
     CLLocation * currentLocation = [locations lastObject];
     double  altitude = currentLocation.altitude; //高度
     double  latitude = currentLocation.coordinate.latitude;
     double  longitude = currentLocation.coordinate.longitude;
}

代理中得lication是位置数据数组,最后一个是当前位置 ;

cllocation类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
     初始化函数
     
     – initWithLatitude:longitude:
     – initWithCoordinate:altitude:horizontalAccuracy:verticalAccuracy:timestamp:
     – initWithCoordinate:altitude:horizontalAccuracy:verticalAccuracy:course:speed:timestamp:
     属性:
        coordinate  property             地理坐标
        altitude  property               高度
        horizontalAccuracy  property     地图中显示圆的半径
        verticalAccuracy  property       垂直高度的精确度
        timestamp  property              位置确定的时间
     – distanceFromLocation:   指定位置到当前位置的距离
        speed  property              运动的速度
        course  property         设备的方向
 
CLLocation 封装了位置、高度等信息  
     altitude是高度值 coordinate是封装的经纬度的结构体 CLLocationCoordinate2D
     typedef struct {
     CLLocationDegrees latitude;      //经度
     CLLocationDegrees longitude;     //纬度
     } CLLocationCoordinate2D;
     
     CLLocationDegrees 是 double 类型别名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值