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

CoreLocation定位的更多相关文章

  1. iOS - CoreLocation 定位

    前言 NS_CLASS_AVAILABLE(10_6, 2_0) @interface CLLocationManager : NSObject 1.CoreLocation 定位 配置 1.在 iO ...

  2. iOS开发拓展篇—CoreLocation定位服务

    iOS开发拓展篇—CoreLocation定位服务 一.简单说明 1.CLLocationManager CLLocationManager的常用操作和属性 开始用户定位- (void)startUp ...

  3. iOS8中使用CoreLocation定位[转]

    本文转自:http://blog.devzeng.com/blog/ios8-corelocation-framework.html iOS8以前使用CoreLocation定位 1.首先定义一个全局 ...

  4. iOS-----使用CoreLocation定位

    使用CoreLocation定位 CoreLocation框架 (CoreLocation.framework)可用于定位设备当前经纬度, 通过该框架, 应用程序可通过附近的蜂窝基站\WIFI信号 或 ...

  5. CoreLocation定位技术

    CoreLocation框架可用于定位设备当前经纬度,通过该框架,应用程序可通过附近的蜂窝基站,WIFI信号或者GPS等信息计算用户位置.      iOS定位支持的3种模式.      (1)GPS ...

  6. CoreLocation 定位

    前言: 本章会使用OC和Swift分别进行实现,需要了解Swift的小伙伴可以翻一下之前的博文 LBS和SoloMo(索罗门) LBS:基于位置的服务,根据定位展示周边美食.景点等信息(全称:Loca ...

  7. iOS iOS9.0 的CoreLocation定位

    一.简介 iOS9.0如果当前处于前台授权状态,默认是不可以后台获取用户位置. 如果在前台授权下,让其能获取到后台定位,该怎么办 可以设置以下属性为YES,就可以继续获取后台位置,但是会出现蓝条 使用 ...

  8. 使用系统的CoreLocation定位

    ////  ViewController.m//  LBS////  Created by tonnyhuang on 15/8/28.//  Copyright (c) 2015年 tonnyhua ...

  9. ios8 - CoreLocation定位服务的变化

    在iOS8开发中,发现一个CoreLocation的使用问题,执行操作之后,不会调用到定位之后的delegate方法中. 根据文档,需要在使用CoreLocation前调用方法: [locationm ...

  10. 关于CoreLocation定位服务的简单使用

    在我们发微博,发表空间内容,以及在朋友圈发表动态的时候,会发现有一个位置信息的控件.iOS中是如何定位我们的位置信息的呢?基于此写一个小Demo,供大家参考使用. 在iOS中,用于定位时需要我们导入以 ...

随机推荐

  1. arukas 的 Endpoint

    arukas 的 Endpoint 什么是端点 What is Endpoint arukas.io 的实例几乎每周都自动重新启动,当实例重新启动时,其端口会更改.IP地址和端口的平均寿命是一周,有时 ...

  2. arguments对象----不定参数的实现方式

    function format(string) { var args = arguments; var pattern = new RegExp("%([1-" + argumen ...

  3. 洛谷 P2299 Mzc和体委的争夺战

    洛谷 P2299 Mzc和体委的争夺战 题目背景 mzc与djn第四弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过前三弹的都知道).但如此之多的男家丁吸引来了我们的体委(矮胖小伙), ...

  4. Q13.cocoapod_卡在“analyzing_depengcies”问题解决

    Q13.CocoaPod 卡在"analyzing depengcies"问题解决 问题描写叙述: 当进入到项目目录后,pod init一个Podfile,然后键入你要的库连接信息 ...

  5. UVA - 590Always on the run(递推)

    题目:UVA - 590Always on the run(递推) 题目大意:有一个小偷如今在计划着逃跑的路线,可是又想省机票费. 他刚開始在城市1,必须K天都在这N个城市里跑来跑去.最后一天达到城市 ...

  6. WCF REST (二)

    今天主要写下  POST等其他方式 发送请求 以及 流方式 文件的上传与下载 一.Post 提交数据 先来想下 POST和Get 的不同   Get 方式 我们直接通过 url  来传递参数   先来 ...

  7. 使用 JS 关闭警告框及监听自定义事件(amaze ui)

    使用 JS 关闭警告框及监听自定义事件(amaze ui) 一.总结 1.jquery匿名函数:第8行,jquery匿名函数,$(function(){});,有没有很简单,只是少了jquery的前面 ...

  8. Android OnGestureListener用法 识别用户手势 左右滑动

    Android可以识别用户的手势(即用户用手指滑动的方向),通过用户不同的手势,从而做出不同的处理 需要使用OnGestureListener 比如说看电子书的时候翻页,或者要滑动一些其他内容 直接上 ...

  9. UVA - 1161 Objective: Berlin(最大流+时序模型)

    题目大意:有n个城市m条航线.给出每条航线的出发地,目的地,座位数,起飞时间和到达时间(所给形式为HHMM.记得转化),再给出城市A和B.和到达城市B的最晚时间.如今问一天内最多有多少人能从A飞到B, ...

  10. andriod first app-computer

    andriod first app-computer 个人信息:就读于燕大本科软件project专业 眼下大三; 本人博客:google搜索"cqs_2012"就可以; 个人爱好: ...