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中,用于定位时需要我们导入以 ...
随机推荐
- wap.css
wap.css 一.总结 1.官方有教程:英语的 http://www.developershome.com/wap/wcss/ 2.wap.css :就是控制页面在手机端样式的 3.DOCTYPE ...
- Hbase技术详细学习笔记
注:转自 Hbase技术详细学习笔记 最近在逐步跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hbase的理解,对相关知识点做了笔记,并在组内进行 ...
- iOS 中使用 XIB 自定义cell的两种方法以及编译出现常见 的错误 (xcode6.0之后)
一. 注册cell 1.创建自定义cell并勾选 xib :(勾选xib就会自动生成与cell文件关联的xib) 2.在 tableViewController里注册自定义Cell (或者遵守tabl ...
- 重新启动IIS不重启电脑
有时候我们在WEB程序如:ASP,中无意中使用到了一个死循环,或者在测试 DLL组件时,挂了.这时候IIS就停止了响应,我们要继续我们的工作啊,重启IIS服务吧. 然而这个进程还在执行,Inter ...
- (转)c运行库、c标准库、windows API的区别和联系
C运行时库函数C运行时库函数是指C语言本身支持的一些基本函数,通常是汇编直接实现的. API函数API函数是操作系统为方便用户设计应用程序而提供的实现特定功能的函数,API函数也是C语言的函数实现的 ...
- 为SSO 5.5恢复忘记的administrator@vsphere.local密码
转自:http://blog.itpub.net/27042095/viewspace-1179938/ 1. cd \Program Files\VMware\Infrastructure\VMwa ...
- 【hdu 3518】Boring counting
[链接]h在这里写链接 [题意] 给出一个字符串,求出至少不重叠出现2次以上的子串有多少个. [题解] 枚举要找的子串的长度i; 根据height数组,找出连续>=i的height; 这几个起始 ...
- 7、linux之定时器
(1) 一个timer_list 结构体的实例对应一个定时器,其定义如下: struct timer_list { struct list_head entry, /*定时器列表*/ unsigned ...
- [Angular2 Animation] Delay and Ease Angular 2 Animations
By default, transitions will appear linearly over time, but proper animations have a bit more custom ...
- ModSecurity防御暴力破解
http://www.modsecurity.org/ ModSecurity防御暴力破解 在阅读本文前,先简单了解下什么是ModSecurity,ModSecurity是一个入侵探测与阻止的引擎.它 ...