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中,用于定位时需要我们导入以 ...
随机推荐
- 14.ZooKeeper Java API 使用样例
转自:http://www.aboutyun.com/thread-7332-1-1.html package com.taobao.taokeeper.research.sample; import ...
- menuconfig_kconfig
这一节的主要内容: Menuconfig的操作 Kconfig和.config文件 Linux内核配置裁剪实验 linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁减掉 menuco ...
- 在MacOS下使用Fiddler抓包
在MacOS下使用Fiddler抓包 有两种方式,分别是安装Mac版的Fiddler,或者是用虚拟机,安装Windows系统,在Windows系统下运行Fiddler对Mac系统中的内容进行抓包. M ...
- PythonServer
服务器模型 硬件服务器 主机.集群 厂商:IBM.HP.联想.浪潮 软件服务器:编写的服务端应用程序,在硬件服务器上运行,一般依托于操作系统,给用户提供一套完整的服务 httpserver:处理htt ...
- tcl -mode
-exact 严格匹配(如string equal) -glob 通配符式匹配(string match) -regexp 正则表达式匹配(regexp) array get和array ...
- 库函数strcpy/strlen的工作方式
库函数strcpy/strlen的工作方式 分类: C/C++ 2011-07-03 23:49 1032人阅读 评论 ...
- 以流的形式接收Http请求
IEnumerable<ReportObject> IHttpReceiveReport.OnPost(System.Web.HttpContextBase context) { //[{ ...
- Javascript和jquery事件-鼠标移入移出事件
javascript使用mouseover和mouseout,只在css中支持hover jquery支持mouseover和mouseout,封装了mouseenter.mouseleave事件函数 ...
- oracle exp 备份脚本
#!/bin/bash#Oracle 环境变量 NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ORACLE_SID=zgw ORACLE_BASE=/opt/oracle OR ...
- 30分钟学会如何使用Shiro(转)
本篇内容大多总结自张开涛的<跟我学Shiro>原文地址:http://jinnianshilongnian.iteye.com/blog/2018936 我并没有全部看完,只是选择了一部分 ...