iOS开发-地图篇-定位

在iOS的开发过程中,会遇到一些有关于定位,导航等开发需求。尤其是在近期,app开发中有关于地图的开发越来越多,因此针对于简单的地图开发,我们还是要进行掌握的。

首先,我们会使用苹果自带的地图功能进行相关的开发,当然在后期我们也可以用一些国内的地图,例如百度地图等等。

我个人在学习地图开发的过程中,开始感觉比较繁琐,很多类啊,框架啊,相关的库啊,都记不住。但是只要多加练习其实地图的开发也是比较简单的。 初学者开始学习地图只要掌握地图的简单应用就可以了。

首先讲一下定位,对于定位我们首先要导入一个库:CoreLoaction.framework。

iOS7 和 iOS8定位的写法有区别 ,iOS8.0之后开启定位需要执行      requestAlwaysAuthorization/requestWhenInUseAuthorization,而且还要配置info.plist。NSLocationAlwaysUsageDescription/NSLocationWhenInUseUsageDescription

第一步:我们需要创建一个定位管理器

CLLocationManager * manager = [[CLLocationManager alloc]init];

创建之后还可以设置相关的属性

//设置定位的经度

_manager.desiredAccuracy = kCLLocationAccuracyBest;

//设置定位的更新频率 单位为米 在超出此范围之后进行更新

_manager.distanceFilter = 5;

//同时需要设置开始定位

[_manager startUpdatingLocation];

第二步:针对于iOS7 和 iOS8的定位方法不同,我总结了一下三种方法。

方法一:判断版本

CGFloat systemVersion = [UIDevice currentDevice].systemVersion.floatValue;

if(systemVersion >= 8.0)

{

//当用到的时候进行开启定位

[self.manager requestWhenInUseAuthorization];

}

方法二:判断方法能否执行

if ([self.manager respondsToSelector:@selector(requestWhenInUseAuthorization)])

{

//如果能响应 则执行

[self.manager requestWhenInUseAuthorization];

}

方法三:判断定位服务是否打开  推荐方法!

if (![CLLocationManager locationServicesEnabled]) {

NSLog(@"提示用户打开定位服务");

}

else

{

//1. 获取当前定位的状态

CLAuthorizationStatus status = [CLLocationManager authorizationStatus];

//如果定位状态未打开

if (status == kCLAuthorizationStatusNotDetermined) {

//requestWhenInUseAuthorization  前端定位

//requestAlwaysAuthorization 前端和后台定位

[self.manager requestWhenInUseAuthorization];

}

//开启定位

[self.manager startUpdatingLocation];

}

第三步:当我们解决了版本问题的时候,并成功开启的了定位,那么我们下面就要得到我们当前的坐标位置了。

这个是CLLocationManagerDelegate 中的方法 返回的locations 可以得到我们想要的坐标位置数据

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations

之后我们会在这个方法中写如下的代码:

//当定位成功之后 这个代理只需要执行一次所有停止位置更新

[manager stopUpdatingLocation];

//获取当前的定位信息

CLLocation * location = [locations lastObject];

//获取经纬度

CLLocationCoordinate2D coordinate = location.coordinate;

// longitude 经度 latitude 纬度

NSLog(@"经度%f 纬度%f",coordinate.longitude,coordinate.latitude);

最后我们就得到了我们当前位置的经纬度,实现了定位的功能。当前的经纬度可以在模拟器的Debug-Loaction中设置。

时间: 2024-10-25 09:48:01

iOS开发-地图篇-定位的相关文章

iOS开发--地图与定位

概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用 和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒 店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开 发中.今天就和大家一起看一下iOS如何进行地图和定位开发. 定位 地图 定位 要 实现地图.导航功能,往往需要先熟悉定位功能

iOS开发网络篇—网络编程基础

iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力 (3)如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻 视频:优酷.百度视频.搜狐视频.爱奇艺视频 音乐

iOS开发拓展篇—CoreLocation地理编码

iOS开发拓展篇—CoreLocation地理编码 一.简单说明 CLGeocoder:地理编码器,其中Geo是地理的英文单词Geography的简写. 1.使用CLGeocoder可以完成“地理编码”和“反地理编码” 地理编码:根据给定的地名,获得具体的位置信息(比如经纬度.地址的全称等) 反地理编码:根据给定的经纬度,获得具体的位置信息 (1)地理编码方法 - (void)geocodeAddressString:(NSString *)addressString completionHan

文顶顶 iOS开发UI篇—IOS开发中Xcode的一些使用技巧

iOS开发UI篇—IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新建项目 cmd + n             新建文件 视图 option + cmd + 回车 打开助理编辑器 cmd + 回车           显示主窗口 cmd + 0             导航窗口 option + cmd + 0    工具窗口 在.m & .h之间切换           control + cmd + 上/下 按

iOS开发UI篇—iPad和iPhone开发的比较

iOS开发UI篇—iPad和iPhone开发的比较 一.iPad简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定位介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2.iPad的市场情况 截止至2013年10月23日,iPad已经累计销售1.7亿台 在平板市场的占有率高达81% 二.关于iphone和iPad 说明:iPhone是手机,iPad.iPad Mini是平板电脑 iPhone和iPad开发的区别 屏幕的尺寸 \分辨率

【转】iOS开发UI篇—iPad和iPhone开发的比较

原文网址:http://www.cnblogs.com/wendingding/p/3918007.html iOS开发UI篇—iPad和iPhone开发的比较 一.iPad简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定位介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2.iPad的市场情况 截止至2013年10月23日,iPad已经累计销售1.7亿台 在平板市场的占有率高达81% 二.关于iphone和iPad 说明:iPh

iOS开发网络篇—文件的上传

iOS开发网络篇—文件的上传 说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中.本文介绍如何不借助第三方框架实现iOS开发中得文件上传. 由于过程较为复杂,因此本文只贴出部分关键代码. 主控制器的关键代码: YYViewController.m 1 #import "YYViewController.h" 2 3 #define YYEncode(str) [str dataUsingEncoding:NSUTF8StringEncoding] 4 5 @inter

iOS开发UI篇—推荐两个好用的Xcode插件(提供下载链接)

iOS开发UI篇—推荐两个好用的Xcode插件(提供下载链接) 这里推荐两款好用的Xcode插件,并提供下载链接. 一.插件和使用如下: 1.两款插件 对项目中图片提供自动提示功能的插件:KSImageNamed-Xcode-master 提供快速创建自动注释:VVDocumenter-Xcode-master 2.使用介绍: (1)KSImageNamed-Xcode-master的使用 安装该插件后,会对文件中图片进行智能提示. (2)VVDocumenter-Xcode-master能提供

iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConnection的使用,如有需要了解NSURLConnection如何发送请求. 详细信息,请参考:http://www.cnblogs.com/wendingding/p/3813706.html 3)本文示例代码发送的请求均为http请求,已经对info.plist文件进行配置. 如何配置,请参考: