nCoreLocation
n简介
n在移动互联网时代,移动app能解决用户的很多生活琐事,比如
p导航:去任意陌生的地方
p周边:找餐馆、找酒店、找银行、找电影院
p
n在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发
pMap Kit :用于地图展示
pCore Location :用于地理定位
p
n2个热门专业术语
pLBS :Location Based Service
pSoLoMo :Social Local Mobile(索罗门)
nCoreLocation框架的使用
nCoreLocation框架使用前提
p导入框架
p
p导入主头文件
#import <CoreLocation/CoreLocation.h>
nCoreLocation框架使用须知
pCoreLocation框架中所有数据类型的前缀都是CL
pCoreLocation中使用CLLocationManager对象来做用户定位
nCLLocationManager
nCLLocationManager的常用操作
p开始用户定位
ü- (void)startUpdatingLocation;
p停止用户定位
ü- (void) stopUpdatingLocation;
ü
n当调用了startUpdatingLocation方法后,就开始不断地定位用户的位置,中途会频繁地调用代理的下面方法
p- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
ülocations参数里面装着CLLocation对象
ü
nCLLocation
nCLLocation用来表示某个位置的地理信息,比如经纬度、海拔等等
p@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;
ü经纬度
p
p@property(readonly, nonatomic) CLLocationDistance altitude;
ü海拔
p
p@property(readonly, nonatomic) CLLocationDirection course;
ü路线,航向(取值范围是0.0° ~ 359.9°,0.0°代表真北方向)
p
p@property(readonly, nonatomic) CLLocationSpeed speed;
ü行走速度(单位是m/s)
ü
p用- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location方法可以计算2个位置之间的距离
nCLLocationManager
n@property(assign, nonatomic) CLLocationDistance distanceFilter;
p每隔多少米定位一次
p
n@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;
p定位精确度(越精确就越耗电)
nCLLocationCoordinate2D
nCLLocationCoordinate2D是一个用来表示经纬度的结构体,定义如下
typedef struct {
CLLocationDegrees latitude; // 纬度
CLLocationDegrees longitude; // 经度
} CLLocationCoordinate2D;
n一般用CLLocationCoordinate2DMake函数来创建CLLocationCoordinate2D
n经纬度
n本初子午线
p穿过英国伦敦格林文治天文台
p往东边(右边)走,是东经(E)
p往西边(左边)走,是西经(W)
p东西经各180°,总共360°
p
n赤道
p往北边(上边)走,是北纬(N)
p往南边(下边)走,是南纬(S)
p南北纬各90°,总共180°
p
n横跨经度\纬度越大(1° ≈ 111km)
p表示的范围就越大
p在地图上看到的东西就越小
p
n中国经纬度
n模拟位置
n如果是模拟器,需要设置模拟位置(经纬度)
n天朝帝都的经纬度是:北纬40°,东经116°
n用户隐私的保护
n从iOS 6开始,苹果在保护用户隐私方面做了很大的加强,以下操作都必须经过用户批准授权
p要想获得用户的位置
p想访问用户的通讯录、日历、相机、相册等等
p
n当想访问用户的隐私信息时,系统会自动弹出一个对话框让用户授权
n用户隐私的保护
n开发者可以在Info.plist中设置NSLocationUsageDescription说明定位的目的(Privacy - Location Usage Description)
n
n
n
n
n
n
n
n
n
n一旦用户选择了“Don’t Allow”,意味着你的应用以后就无法使用定位功能
p为了严谨起见,最好在使用定位功能之前判断当前应用的定位功能是否可用
pCLLocationManager有个类方法可以判断当前应用的定位功能是否可用
ü+ (BOOL)locationServicesEnabled;
nCLGeocoder
n使用CLGeocoder可以完成“地理编码”和“反地理编码”
p地理编码:根据给定的地名,获得具体的位置信息(比如经纬度、地址的全称等)
p反地理编码:根据给定的经纬度,获得具体的位置信息
p
n地理编码方法
p- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;
p
n反地理编码方法
p- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;
nCLGeocodeCompletionHandler
n当地理\反地理编码完成时,就会调用CLGeocodeCompletionHandler
ptypedef void (^CLGeocodeCompletionHandler)(NSArray *placemarks, NSError *error);
p这个block传递2个参数
üerror :当编码出错时(比如编码不出具体的信息)有值
üplacemarks :里面装着CLPlacemark对象
nCLPlacemark
nCLPlacemark的字面意思是地标,封装详细的地址位置信息
p@property (nonatomic, readonly) CLLocation *location;
ü地理位置
ü
p@property (nonatomic, readonly) CLRegion *region;
ü区域
ü
p@property (nonatomic, readonly) NSDictionary *addressDictionary;
ü详细的地址信息
ü
p@property (nonatomic, readonly) NSString *name;
ü地址名称
ü
p@property (nonatomic, readonly) NSString *locality;
ü城市
n
- iOS - CoreLocation 定位
前言 NS_CLASS_AVAILABLE(10_6, 2_0) @interface CLLocationManager : NSObject 1.CoreLocation 定位 配置 1.在 iO ...
- iOS开发拓展篇—CoreLocation定位服务
iOS开发拓展篇—CoreLocation定位服务 一.简单说明 1.CLLocationManager CLLocationManager的常用操作和属性 开始用户定位- (void)startUp ...
- iOS8中使用CoreLocation定位[转]
本文转自:http://blog.devzeng.com/blog/ios8-corelocation-framework.html iOS8以前使用CoreLocation定位 1.首先定义一个全局 ...
- iOS-----使用CoreLocation定位
使用CoreLocation定位 CoreLocation框架 (CoreLocation.framework)可用于定位设备当前经纬度, 通过该框架, 应用程序可通过附近的蜂窝基站\WIFI信号 或 ...
- CoreLocation定位技术
CoreLocation框架可用于定位设备当前经纬度,通过该框架,应用程序可通过附近的蜂窝基站,WIFI信号或者GPS等信息计算用户位置. iOS定位支持的3种模式. (1)GPS ...
- CoreLocation 定位
前言: 本章会使用OC和Swift分别进行实现,需要了解Swift的小伙伴可以翻一下之前的博文 LBS和SoloMo(索罗门) LBS:基于位置的服务,根据定位展示周边美食.景点等信息(全称:Loca ...
- iOS iOS9.0 的CoreLocation定位
一.简介 iOS9.0如果当前处于前台授权状态,默认是不可以后台获取用户位置. 如果在前台授权下,让其能获取到后台定位,该怎么办 可以设置以下属性为YES,就可以继续获取后台位置,但是会出现蓝条 使用 ...
- 使用系统的CoreLocation定位
//// ViewController.m// LBS//// Created by tonnyhuang on 15/8/28.// Copyright (c) 2015年 tonnyhua ...
- ios8 - CoreLocation定位服务的变化
在iOS8开发中,发现一个CoreLocation的使用问题,执行操作之后,不会调用到定位之后的delegate方法中. 根据文档,需要在使用CoreLocation前调用方法: [locationm ...
- 关于CoreLocation定位服务的简单使用
在我们发微博,发表空间内容,以及在朋友圈发表动态的时候,会发现有一个位置信息的控件.iOS中是如何定位我们的位置信息的呢?基于此写一个小Demo,供大家参考使用. 在iOS中,用于定位时需要我们导入以 ...
随机推荐
- theme-windowAnimationStyle 动画设置
对于windowAnimationStyle 的引用,目前自己发现的有两处 1.就是直接在Theme 中引用的,如下 <style name="Theme.Funui" pa ...
- item-设置可见性
如果我们想要设置menu中item的可见行,有两种方式: 1.直接在menu的xml代码中设置 <menu> <item android:id="@+id/action_h ...
- RPC调用框架比较分析--转载
原文地址:http://itindex.net/detail/52530-rpc-%E6%A1%86%E6%9E%B6-%E5%88%86%E6%9E%90 什么是RPC: RPC(Remote Pr ...
- uvaoj-1595:symmetry
1595 - Symmetry The figure shown on the left is left-right symmetric as it is possible to fold the s ...
- 2013腾讯编程马拉松||HDU 4505 小Q系列故事——电梯里的爱情 水水水
http://acm.hdu.edu.cn/showproblem.php?pid=4505 题目大意: 电梯最开始在0层,并且最后必须再回到0层才算一趟任务结束.假设在开始的时候已知电梯内的每个人要 ...
- HibernateCRUD基础框架(2)-HQL语句构造器(HqlQueryBuilder,HqlUpdateBuilder)
上篇讲述了最基本的实体类,本篇接着讲述HQL语句构造器,包括查询和更新等. 优点:通过面向对象的方式构造HQL语句,更快捷,不需要手动拼接HQL. 缺点:封装可能降低性能,只能支持常用的和较为简单的H ...
- jni和C++通信中文乱码的问题
转自 http://www.cnblogs.com/bluesky4485/archive/2011/12/13/2285802.html 首先,需要明确几个关于编码的基本概念: java内部是使用的 ...
- html练习(3)
1.这个小练习用到了css的四种选择器id选择器,类选择器,html选择器,通配符选择器. (1)假设一个元素中用到了各种选择器,而且选择器中的属性发生了冲突,则 优先级为id选择器>类选择器& ...
- Datasets for MachineLearning
Public datasets for machine learning http://homepages.inf.ed.ac.uk/rbf/IAPR/researchers/MLPAGES/mld ...
- Android5.0(Lollipop) BLE蓝牙4.0+浅析概念(四)
作者:Bgwan链接:https://zhuanlan.zhihu.com/p/23679793来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 置顶:此文转载CSDN博 ...