前言:

在iOS开发中,有关导航,周边的开发,必须基于2个框架:

Map Kit :用于地图展示
Core Location :用于地理定位
 

用户隐私的保护

从iOS 6开始,苹果在保护用户隐私方面做了很大的加强,以下操作都必须经过用户批准授权:获取用户的位置、通讯录、日历、相机、相册等等
从iOS 8开始,用户定位分两种情况
总是使用用户位置:NSLocationAlwaysUsageDescription
使用应用时定位:NSLocationWhenInUseDescription               [self.manager requestWhenInUseAuthorization];
当想访问用户的隐私信息时,系统会自动弹出一个对话框让用户授权
      

CoreLocation框架的使用

1.导入框架CoreLocation.framework

      

2.导入主头文件

  #import <CoreLocation/CoreLocation.h>

3.在info.plist文件中设置提示用户定位信息,NSLocationAlwaysUsageDescription

      

4.代码: 功能定位当前经纬度. 一直两地经纬度,求距离

    

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h> @interface ViewController ()<CLLocationManagerDelegate>//遵守代理
@property (nonatomic, strong) CLLocationManager *manager; @end @implementation ViewController
- (CLLocationManager *)manager
{
if (!_manager) {
//1.创建一个定位管理器
_manager = [[CLLocationManager alloc]init];
} return _manager;
} - (void)viewDidLoad {
[super viewDidLoad]; //2.获取用户的授权
[self.manager requestAlwaysAuthorization]; //3.开始定位
[self.manager startUpdatingLocation]; //4.设置代理
self.manager.delegate = self; //5.求两地距离.
CLLocation *loc1 = [[CLLocation alloc]initWithLatitude: longitude:];
CLLocation *loc2 = [[CLLocation alloc]initWithLatitude: longitude:]; CLLocationDistance dis = [loc1 distanceFromLocation:loc2];
NSLog(@"两地距离是%f米",dis); } //代理方法:会一直调用此方法.
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
//6.获取用户当前的位置
CLLocation *location = [locations firstObject]; /*经纬度 CLLocationCoordinate2D是一个经纬度的结构体.
coordinate.longitude 经度
coordinate.latitude 纬度
*/ CLLocationCoordinate2D coordinate = location.coordinate; NSLog(@"纬度:%f ----经度 %f",coordinate.latitude,coordinate.longitude); }

CLLocationManager

- (void)startUpdatingLocation;//开始用户定位

- (void) stopUpdatingLocation;//停止用户定位

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;//代理方法,当调用了startUpdatingLocation方法后,就开始不断地定位用户的位置,中途会频繁地调用. locations参数里面装着CLLocation对象 //参考上边代码
 
@property(assign, nonatomic) CLLocationDistance distanceFilter;//每隔多少米定位一次
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;//定位精确度(越精确就越耗电)
     //导航专用的精确度
extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);
extern const CLLocationAccuracy kCLLocationAccuracyBest;
extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;
extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;
extern const CLLocationAccuracy kCLLocationAccuracyKilometer;
extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;
*/
//定位精确度
self.manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;

CLLocation

CLLocation用来表示某个位置的地理信息,比如经纬度、海拔等等
@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;//经纬度
@property(readonly, nonatomic) CLLocationDistance altitude;//海拔
@property(readonly, nonatomic) CLLocationDirection course;//路线,航向(取值范围是0.0° ~ 359.9°,0.0°代表真北方向)
p@property(readonly, nonatomic) CLLocationSpeed speed;//行走速度(单位是m/s)
用- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location   方法可以计算2个位置之间的距离

CLLocationCoordinate2D

CLLocationCoordinate2D是一个用来表示经纬度的结构体,定义如下

typedef struct {

CLLocationDegrees latitude; // 纬度

CLLocationDegrees longitude; // 经度

} CLLocationCoordinate2D;

一般用CLLocationCoordinate2DMake函数来创建CLLocationCoordinate2D
 
模拟器当前位置(经纬度)设定:
      

CoreLocation框架的使用---定位,求两地距离的更多相关文章

  1. mysql根据经纬度求两地距离

    #1.两点距离(1.4142135623730951) ,),point(,)); select st_distance(point (120.10591, 30.30163),point(120.1 ...

  2. iOS定位--CoreLocation框架

    CoreLocation框架的使用 // 首先导入头文件 #import <CoreLocation/CoreLocation.h> CoreLocation框架中所有数据类型的前缀都是C ...

  3. 地图定位CoreLocation框架,地理位置编码与反编码

    在现代互联网时代,越来越多的应用,都用到了地图定位功能,在iOS开发中,想要加入这种功能,必须基于两个框架进行开发: 1.Map Kit:用于显示地图, 2.CoreLocation:用于显示地理位置 ...

  4. 【iOS】7.4 定位服务->2.1.3.1 定位 - 官方框架CoreLocation 功能1:地理定位

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

  5. IOS CoreLocation框架的使用(用于地理定位)

    ●  在移动互联网时代,移动app能解决用户的很多生活琐事,比如 ●  导航:去任意陌生的地方 ●  周边:找餐馆.找酒店.找银行.找电影院 ●  在上述应用中,都用到了地图和定位功能,在iOS开发中 ...

  6. MapKit/CoreLocation框架 总结

    MapKit/CoreLocation框架 /*英译 core:核心 track:踪迹 current:当前 statellite:卫星 hybird:混合  region:范围 annotation ...

  7. CoreLocation框架的使用

    CoreLocation框架使用 一.地图和定位的简介 1.应用场景 周边:找餐馆/找KTV/找电影院(团购APP) 导航:根据用户设定的起点和终点,进行路线规划,并指引用户如何到达(地图APP) 2 ...

  8. CoreLocation 框架

    获取设备的地理位置和方向 一.概述 CoreLocation框架,它提供了如下几种服务 确定设备的地理位置 高度 方向 或到附近 iBeacon 的相对位置. 这个框架使用所有可用的车载硬件.如 Wi ...

  9. POJ1741--Tree (树的点分治) 求树上距离小于等于k的点对数

    Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 12276   Accepted: 3886 Description ...

随机推荐

  1. 实习日记:图像检索算法 LSH 的总结与分析(matlab)

    最开始仿真和精度测试,基于 matlab 完成的. Demo_MakeTable.m (生成 Hash 表) %======================================== %** ...

  2. ctags+cscope

    a opensource study website http://www.lanedo.com/2013/the-hidden-pearls-of-tracker-2/ http://www.lan ...

  3. 解决【win10管理员已阻止程序运行】问题时有感

    今天在安装loadrunner11的时候点击setup弹出以下报错 然后试了很多方法,从网上找了各种解决方案:修改UAC.修改本地组策略,均未解决ps:本人电脑是win10家庭中文版. 研究了半天未果 ...

  4. 初识UML

    最近的学习中,遇到几次UML图,很是迷糊,确切的说,看不太懂.查阅UML相关资料,基本解决了这个问题.UML看起来还是相当深奥,这里只提一下解决问题的部分知识.(以下知识来自网络) Unified M ...

  5. ie6并不是不支持!important

    之前对ie6接触不多,并且认识也不深,虽然知道ie6中的!important很特别,但是并没有记住特别在哪里~今天就记录一下吧! 首先,很多人说ie6是不支持!important的,其实这个一个错误的 ...

  6. 解析利用wsdl.exe生成webservice代理类的详解

    利用wsdl.exe生成webservice代理类:根据提供的wsdl生成webservice代理类1.开始->程序->Visual Studio 2005 命令提示2.输入如下红色标记部 ...

  7. UITaleView的基础使用及数据展示操作

    UITableView表视图,是实用的数据展示的基础控件,是继承于UIScrollView,所以也可以滚动.但不同于UIScrollView,UITableView只可以上下滚动,而不能左右滚动. 因 ...

  8. 单机运行环境搭建之 --CentOS-6.5安装配置Tengine

    一.安装pcre:   cd /usr/local/src wget http://downloads.sourceforge.net/project/pcre/pcre/8.34/pcre-8.34 ...

  9. weed-fs参数列表

    weed-fs没有详细的帮助文档,为了方便阅读,特意把有用的参数帮助罗列出来.未列出的两个命令为version(版本查询) 及shell(这个命令在0.45版本只有回显功能)nerc@Ubuntu:~ ...

  10. 一致性hash介绍

    像Memcache以及其它一些内存K/V数据库一样,Redis本身不提供分布式支持,所以在部署多台Redis服务器时,就需要解决如何把数据分散到各个服务器的问题,并且在服务器数量变化时,能做到最大程度 ...