一、CoreLocation

1. 实现一次定位

1> 创建位置管理器  —> Strong

2> 手动请求授权(iOS8以后,必须授权)

3> 设置代理 —> 获取属性

4> 开始定位

5> 代理方法中停止定位

 

2.实现持续定位

1> --> ---> 2> 设置精准度 —> 降低通讯之间的计算,达到省电的目的

 

3.比较两个位置的距离

1. 创建Location对象 —> 最少需要经纬度

2. 调用对象方法distanceFromLocation即可

 

4.请求授权及iOS9新特性

请求授权

1> 请求授权:a. 调用授权方法后 b. 必须配置对应的plist键值描述文件

2> 如果两个方法同时写, 3> 基本上应用程序只需要使用 requestAlwaysAuthorization

4>

iOS9新特性 

1.如果使用了,可以临时使用后台定位

 

二、Geocoder

1.地理编码

1> 创建CLGeocoder对象

2> 调用地理编码方法

3> 解析

3.1 防错处理

3.2 遍历地标对象CLPlacemark

4> 地理编码时,一个地名可能对应多个城市,有多个地标结果

 

2.反地理编码

反地理编码 是将  经纬度  转换成地球表面上的  地理位置  的过程(不止地名)

1> 创建CLGeocoder对象

2> 调用反地理编码方法 -> 需要一个CLLocation

3> 解析

3.1 防错处理

3.2 遍历地标对象CLPlacemark

4> 反地理编码时,基本上一个经纬度就对应一个地标结果(不排除多个的可能)

 

三、MapView的基本使用

1.显示用户位置

1> 创建位置管理器请求授权

2> 设置显示用户位置  用户跟踪模式

 

 

2.根据用户位置显示对应的大头针信息(反地理编码)

MKUserLocation: 用户位置的大头针模型

1> 使用反地理编码知识,进行大头针模型的标题和子标题的设置

 

 

3.设置地图显示类型

1> 设置此mapView即可  iOS9有五个属性,但是后面两个,对于中国无用

 

4. 设置以用户所在位置为中心点(最好手动再设置一次)

1> 设置中心点坐标 不能设置显示跨度 centerCoordinate

2> 设置范围,含了经纬度和显示跨度

 

5. 获取地图显示区域改变时的中心点坐标及显示跨度  放大地图 缩小地图

1> 双击,系统显示跨度变小一倍  —>  重设region属性即可 —> 点击放大

2> 跟上面做取反操作即可 * 2  —>  重设region属性即可

 

 

四、

1.添加大头针

1>. 自定义大头针模型

     1> 导入框架

     2> 遵守协议

     3> 设置属性

 

2>. 使用地图属性,添加即可

 

3>. 如果想要点击时添加 —> 可以先获取点,然后转换成经纬度

 

 

2. 自定义大头针 -更改颜色 - 设置掉落动画

1> 实现代理方法viewForAnnotation

2> 创建并实现MKPinAnnotationView的两个属性

3> 如果是现实用户位置的大头针模型,一定不要自定义

 

 

3. 自定义大头针 -更改大头针的图像

1> 使用MKAnnotationView来创建大头针View

2> 增加模型的属性,创建模型时赋值

3> 设置自定义大头针View的image属性

4> 系统显示自己的位置的大头针也会动画掉落,可以取消