关于iOS开发首次进入需要获取地理位置
今天给大家简单介绍一下iOS开发过程中会遇到的获取地理位置的问题,(话不多说进入正题)这里给大家讲解一下两种在APPdelegate获取地理位置的方法:
一:首先是用系统的方法获取地理位置:
1、 首先在AppDelegate.m导入
@import CoreLocation;
@import MapKit;
2、 声明协议:
<CLLocationManagerDelegate> //协议
3、声明属性:
@property(nonatomic) CLLocationManager *locationManager;
4、
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.locationManager = [[CLLocationManager alloc] init];
//判断异常
if (![CLLocationManager locationServicesEnabled]) {
NSLog(@"定位服务不可用!");
}
//定位精度
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.delegate = self;
//启动定位
[_locationManager startUpdatingLocation];
....
return YES;
}
5、完成地图的代理方法:
#pragma mark -- CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray<CLLocation *> *)locations {
static BOOL isLocation = NO;
//地理位置逆编码
[self veverseGeLocation:manager.location completion:^(BOOL sucess, id content) {
if (sucess) {
//这里打印一下数据,方便查看
NSLog(@"%@",content);
//NSString * provnice = content[@"State"];
//NSString * city = content[@"City"];
//NSString * district = content[@"SubLocality"];
if (isLocation == YES) {
return ;
}
//如果你其他界面需要用到该地理位置;则直接将NSString 内容保存下来,需要在取出来
isLocation = YES;
[self.locationManager stopUpdatingLocation];
}else{
}
}];
//停止定位
[manager stopUpdatingLocation];
}
//地理位置逆编码:把经纬度信息编码成格式化的地理位置信息
- (void)veverseGeLocation:(CLLocation *)location completion:(void(^)(BOOL sucess, id content)) completion{
CLGeocoder *coder = [[CLGeocoder alloc]init];
//逆编码方法,后台线程执行
[coder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
BOOL sucess;
id content = nil ;
if (error) {
sucess = NO;
content = error.localizedDescription;
}
else{
sucess = YES;
CLPlacemark *placeMark = placemarks.firstObject;
content = placeMark.addressDictionary;
}
completion(sucess,content);
}];
}
二:首先是用高德的方法获取地理位置:用高德地图的话首先需要添加开发地图需要用到的库:对于库的导入依据开发人员的实际需求而定进行cocoapods导入或者手动拖入,前面流程基本都是跟随高德地图api 进行的,再次就不多重复介绍,详情各位可自行前往学习(链接:http://lbs.amap.com/api/ios-sdk/guide/create-project,下面就APPdelegate的内容进行讲解:
1、导入对应的头文件:
#import <AMapFoundationKit/AMapFoundationKit.h>
#import <AMapLocationKit/AMapLocationKit.h>
2、添加协议:
<AMapLocationManagerDelegate> //协议
3、声明属性:
@property (nonatomic,strong)AMapLocationManager * locationManager;
4、
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[AMapServices sharedServices].apiKey = @"您的key";
[[AMapServices sharedServices] setEnableHTTPS:YES];
//创建地图manager
self.locationManager = [[AMapLocationManager alloc] init];//实例化位置管理器
[self.locationManager setDelegate:self];
[self.locationManager startUpdatingLocation];//启动定位
[self.locationManager setPausesLocationUpdatesAutomatically:NO];
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];//定位精度
self.locationManager.locatingWithReGeocode = YES;//连续定位是否返回逆地理信息,默认NO。
return YES;
}
5、代理方法:
#pragma mark - AMapLocationManager Delegate
- (void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location reGeocode:(AMapLocationReGeocode *)reGeocode
{
NSLog(@"location:{lat:%f; lon:%f; accuracy:%f}", location.coordinate.latitude, location.coordinate.longitude, location.horizontalAccuracy);
static BOOL isLocation = NO;
if (reGeocode != nil && isLocation == NO) {
// NSString * provnice = reGeocode.province;
// NSString * city = reGeocode.city;
// NSString * district = reGeocode.district;
// NSString *codeStr = reGeocode.adcode;//地理adcode
//如果你其他界面需要用到该地理位置;则直接将NSString 内容保存下来,需要在取出来
isLocation = YES;
}
}
以上就是两者获取地理位置的方法,需要说明的是:如果开发项目中后面会用到地理位置的adcode的时候,本人建议用第二种方法,因为第一种目前不能获取到该adcode,或者本人技术不到位还没有找到解决的办法,望各位大神多多谅解和给出指导意见,谢谢!
关于iOS开发首次进入需要获取地理位置的更多相关文章
- iOS开发之网络编程--获取文件的MIMEType
前言:有时候我们需要获取文件的MIMEType的信息,下面就介绍关于获取MIMEType的方法. 1.直接百度搜索关键字"MIMEType",你会找到,然后查吧: 2.用代码获取文 ...
- 【iOS开发-从网络上获取图片尺寸】
实际开发过程中,容易碰到从网络上获取图片尺寸的场景,比如一个UIImageView要装载从网络上获取的图片,但要先设置其frame,此时又不知道图片尺寸,就要从网络上获取尺寸了.为了最好的用户体验,一 ...
- iOS开发 首次启动显示用户引导,第二次启动直接进入App,UIScrollView,UIPageControl,NSUserDefaults
首先创建一个引导图的控制器类 UserGuideViewController.h和UserGuideViewController.m #import <UIKit/UIKit.h> #im ...
- ios开发之-- tableview/collectionview获取当前点击的cell
方法如下: 一般collectionView 或者 tableview都有自带的点击函数,如下: , collectionView -(void)collectionView:(UICollectio ...
- IOS开发代码分享之获取启动画面图片的string
http://www.jb51.net/article/55309.htm 本代码支持 iPhone 6 以下. 支持 iPhone 及 iPad ? 1 2 3 4 5 6 7 8 9 10 11 ...
- 文顶顶iOS开发博客链接整理及部分项目源代码下载
文顶顶iOS开发博客链接整理及部分项目源代码下载 网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...
- iOS 开发获取唯一标识
在做流量精灵的时候有这样一个需求,帐户默认需要取手机的imsi 信息.这就有一个好处,即便用户删除我们的应用后从新下载,下次进入时他们还会以同样的身份登陆,并且获得原先纪录.这样不仅对于开发公司人员来 ...
- iOS开发中获取WiFi相关信息
iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...
- iOS开发——运行时OC篇&使用运行时获取系统的属性:使用自己的手势修改系统自带的手势
使用运行时获取系统的属性:使用自己的手势修改系统自带的手势 有的时候我需要实现一个功能,但是没有想到很好的方法或者想到了方法只是那个方法实现起来太麻烦,一或者确实为了装逼,我们就会想到iOS开发中最牛 ...
随机推荐
- x86主机搭建家庭智能路由系统 ---- Proxmox虚拟化实现一机多用
Proxmox VE简介 Proxmox VE(Proxmox Virtual Environment) 是一款完全开源虚拟化管理平台,可以管理QEMU/KVM虚拟机和LXC容器.事实上它只是一个前端 ...
- CoreGraphics--画线/圆/矩形
- (void)drawRect:(CGRect)rect { // Drawing code NSLog(@"drawRect自动调用"); //画图步骤 //获取上下文(/画笔 ...
- Spring IOC容器中Bean的生命周期
1.IOC容器中Bean的生命周期 构造器函数 设置属性 初始化函数(在Bean配置中 init-method) 使用Bean 结束时关闭容器(在Bean中配置destroy-method) 2.Be ...
- 利用cropper插件裁剪本地图片,然后将裁剪过后的base64图片上传至七牛云空间
现在做的项目需要做一些图片处理,由于时间赶急,之前我便没有处理图片,直接将图片放在input[type=file]里面,以文件的形式提交给后台,这样做简直就是最低级的做法,之后各种问题便出来了,人物头 ...
- javascript中parseint和number的区别
本来是不想写这个的,网上也有,问题是讲得很不清楚,或者说我阅读能力差吧. 首先,解释一下定义的区别: parseInt将字符串(String)类型转为整数类型.Number() 函数把对象(Objec ...
- springMVC中文乱码问题解决
1:表单提交controller获得中文参数后乱码解决方案 注意: jsp页面编码设置为UTF-8 form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果 <%@ ...
- 【阿里聚安全技术公开课】移动APP漏洞风险与解决方案
阿里云·云栖社区携手阿里聚安全打造阿里安全技术公开课,带你一探互联网安全的风采 关于移动APP安全 移动App是大家使用手机每天接触最多的东西,然而在移动APP开发中,由于一些开发工程师对安全的不重视 ...
- ZooKeeper的简单理解
1 ZooKeeper的一致性特点 概念 描述 备注 顺序一致性 以ZXID来保证事务的顺序性 原子性 以ZAB保证原子操作,要么成功,要么失败 单一视图 无论客户端从哪个服务器获取到关于应用的数据都 ...
- C++STL的简单使用
#include <iostream>#include <vector>#include<deque>#include <list>#include&l ...
- 部署在服务器中的WebService
1.继上篇之后,我把我的WebService部署在了比较小的Tomcat中,首先要把Jax-ws.jar架包放在lib里面 2.在我的WEB-INF里面增加了一个xml文件:sun-jaxws.xml ...