开发者社区> 文艺小青年> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

iOS开发-iOS8地理位置定位

简介:
+关注继续查看

现在的App基本上都有定位功能,旅游网站根据定位推荐旅游景点,新闻App通过地理位置推荐当地新闻,社交类的App通过位置交友,iOS中实现以上功能需要一个核心的框架CoreLocation,框架提供了一些服务可以获取和定位用户当前的位置。服务会通过一种低功耗的方式通知用户地理位置的变化,iOS中三种地位方式, Wifi定位(通过查询一个Wifi路由器的地理位置的信息),蜂窝基站定位(通过移动运用商基站定位) 和GPS卫星定位(准确度最高,耗电量最大)。

1.新建一个iOS项目,在ViewController中导入核心框架(#import <CoreLocation/CoreLocation.h>);

2.定义一个CLLocationManager变量,实现CLLocationManagerDelegate协议,CLLocationManager负责具体的实现;

ViewController.h中代码:

1
2
3
4
5
6
7
8
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
 
@interface ViewController : UIViewController<CLLocationManagerDelegate>
{
    CLLocationManager *mylocationManager;
}
@end

ViewDidLoad方法中代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
self.view.backgroundColor=[UIColor greenColor];
if (nil == mylocationManager)
    mylocationManager = [[CLLocationManager alloc] init];
 
mylocationManager.delegate = self;
//设置定位的精度
mylocationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
 
//设置定位服务更新频率
mylocationManager.distanceFilter = 500;
 
if ([[[UIDevice currentDevice] systemVersion] doubleValue]>=8.0)
{
 
    [mylocationManager requestWhenInUseAuthorization];// 前台定位
    NSLog(@"当前的版本是%f",[[[UIDevice currentDevice] systemVersion] doubleValue]);
 
    //[mylocationManager requestAlwaysAuthorization];// 前后台同时定位
}
 
[mylocationManager startUpdatingLocation];

效果图如下:

 

3.如果不能弹出以上信息,你需要在Info.plist文件中设置一下,加入一个NSLocationWhenInUseUsageDescription(前台获取GPS定位),NSLocationAlwaysUsageDescription(前后台获取GPS定位),Value可以为空;

4.常用方法调用:

大多数协议中都会包含一个处理失败的方法,CoreLocationDelegate中的didFailWithError:

1
2
3
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
    NSLog(@"FlyElephant-http://www.cnblogs.com/xiaofeixiang");
}

 获取变化的之后地理位置didUpdateLocations,locations是按时间先后顺序的集合:

1
2
3
4
5
6
7
8
9
//地理定位完成之后的一个数组
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
    //获取最新的位置
    CLLocation * currentLocation = [locations lastObject];
    CLLocationDegrees latitude=currentLocation.coordinate.latitude;
    CLLocationDegrees longitude=currentLocation.coordinate.longitude;
     
    NSLog(@"didUpdateLocations当前位置的纬度:%.2f--经度%.2f",latitude,longitude);
}

获取地理位置变化的起始点和终点,didUpdateToLocation:

1
2
3
4
5
6
7
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
  
    CLLocationDegrees latitude=newLocation.coordinate.latitude;
    CLLocationDegrees longitude=oldLocation.coordinate.longitude;
    NSLog(@"didUpdateToLocation当前位置的纬度:%.2f--经度%.2f",latitude,longitude);
}
    

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4339013.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS开发:下架App的步骤
首先登陆你的 iTunes Connect
0 0
2022 ios APP最新iOS开发上架测试教程
2022 ios APP最新iOS开发上架测试教程
0 0
[ios开发]-APP-上架流程
由于苹果的机制,在非越狱机器上安装必须通过官方的Appstore, 开发者开发好应用后上传Appstore,也需要通过审核等环节。 AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传Appstore作了支持。 本文从三个流程来介绍如何实现AppCan在 线编译出ipa包,以及上传到苹果Appstore。
0 0
iOS开发之打包上传到App Store——(一)各种证书的理解
iOS开发之打包上传到App Store——(一)各种证书的理解
0 0
IOS APP开发:苹果app从开发到上架教程详解
IOS APP开发:苹果app从开发到上架教程详解
0 0
IOS开发:UniAPP实现BLE低功耗蓝牙开发1
1、Uni-app介绍 2、Uni-app优点 3、BLE开发流程
0 0
iOS开发 - 穿针引线之内存管理(二)
iOS开发 - 穿针引线之内存管理
0 0
iOS开发 - 穿针引线之内存管理(一)
iOS开发 - 穿针引线之内存管理
0 0
iOS开发 - NSTimer极限使用(二)
iOS开发 - NSTimer极限使用
0 0
iOS开发 - NSTimer极限使用(一)
iOS开发 - NSTimer极限使用
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Facebook iOS App技术演化十年之路
立即下载
From Java_Android to Swift iOS
立即下载
深入剖析 iOS 性能优化
立即下载