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. 14.ZooKeeper Java API 使用样例

    转自:http://www.aboutyun.com/thread-7332-1-1.html package com.taobao.taokeeper.research.sample; import ...

  2. menuconfig_kconfig

    这一节的主要内容: Menuconfig的操作 Kconfig和.config文件 Linux内核配置裁剪实验 linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁减掉 menuco ...

  3. 在MacOS下使用Fiddler抓包

    在MacOS下使用Fiddler抓包 有两种方式,分别是安装Mac版的Fiddler,或者是用虚拟机,安装Windows系统,在Windows系统下运行Fiddler对Mac系统中的内容进行抓包. M ...

  4. PythonServer

    服务器模型 硬件服务器 主机.集群 厂商:IBM.HP.联想.浪潮 软件服务器:编写的服务端应用程序,在硬件服务器上运行,一般依托于操作系统,给用户提供一套完整的服务 httpserver:处理htt ...

  5. tcl -mode

    -exact     严格匹配(如string equal) -glob 通配符式匹配(string match) -regexp   正则表达式匹配(regexp) array get和array ...

  6. 库函数strcpy/strlen的工作方式

    库函数strcpy/strlen的工作方式         分类:             C/C++              2011-07-03 23:49     1032人阅读     评论 ...

  7. 以流的形式接收Http请求

    IEnumerable<ReportObject> IHttpReceiveReport.OnPost(System.Web.HttpContextBase context) { //[{ ...

  8. Javascript和jquery事件-鼠标移入移出事件

    javascript使用mouseover和mouseout,只在css中支持hover jquery支持mouseover和mouseout,封装了mouseenter.mouseleave事件函数 ...

  9. oracle exp 备份脚本

    #!/bin/bash#Oracle 环境变量 NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ORACLE_SID=zgw ORACLE_BASE=/opt/oracle OR ...

  10. 30分钟学会如何使用Shiro(转)

    本篇内容大多总结自张开涛的<跟我学Shiro>原文地址:http://jinnianshilongnian.iteye.com/blog/2018936 我并没有全部看完,只是选择了一部分 ...