1 获取用户位置
需要导入CoreLocation框架
使用定位服务前,通常需要检查定位服务是否可用 :
[CLLocationManager locationServicesEnabled]
ios7 的时候,在调用定位服务时,会自动申请用户的授权
ios8 之后,在调用定位服务时,app必须主动去申请用户的授权
需要在info.plist 文件中声明相关的key
CLLocationManager: //主要处理位置和方向相关的事件
- requestWhenInUseAuthorization// 仅仅是前台可以获取位置
- requestAlwaysAuthoriz // 在前台与后台均可获取位置
代理方法: -locationManager: didChangeAuthorizationStatus
CLAuthorizationStatus 授权状态
kCLAuthorizationStatusNotDetermined //用户尚未决定授权权限
kCLAuthorizationStatusRestricted //无法使用定位服务,该状态用户无法改变
kCLAuthorizationStatusDenied //用户拒绝该应用使用定位服务,或是定位服务总开关处于关闭状态
kCLAuthorizationStatusAuthorized //已经授权(废弃)
kCLAuthorizationStatusAuthorizedAlways //用户允许该程序无论何时都可以使用地理信息
kCLAuthorizationStatusAuthorizedWhenInUse //用户同意程序在可见时使用地理位置
2计算用户位移,时间,平均速度
解决方法:
1.确定模拟器(手机)已经联网并且允许程序获取地理位置
2.重置地理位置服务或者网络服务
/*-------- 计算用户位移, 时间, 平均速度 --------*/
CLLocationManager //主要处理位置和方向相关的事件
distanceFilter // 距离过滤值, 设备移动达到该值后才会触发代理方法
desiredAccuracy // 定位的精确度
activityType // 定位数据用途
- startUpdateLocation // 开始定位
- stopUpdateLocation // 停止定位
// CLLocationAccuracy 定位精确度
kCLLocationAccuracyBestForNavigation //导航级最佳精准
kCLLocationAccuracyBest //最佳精准
kCLLocationAccuracyNearestTenMeters //10米误差
kCLLocationAccuracyHundredMeters //百米胡茬
kCLLocationAccuracyKilometer //千米误差
kCLLocationAccuracyThreeKilometers //3千米误差
// CLActivityType 定位数据用途
CLActivityTypeOther //作为普通用途
CLActivityTypeAutomotiv eNavigation //作为车辆导航
CLActivityTypeFitness //作为步行导航
CLActivityTypeOtherNavigation //作为其它导航
CLLocation //表示位置相关的信息, 如果经度/纬度/高度/速度/路线等
coordinate //表示该位置的坐标
timestamp // 定位信息返回的时间
speed // 设备移动速度 单位是米/秒
- distanceFromLocation // 计算两个点之间的距离
3 获取设备方向,制作指南针
CLHeading // 表示设备方向相关的信息
magneticHeading //设备与磁北的相对角度
trueHeading //设置与真北的相对角度, 必须和定位一起使用, iOS需要位置来计算真北
弧度 = 角度 / 180 * M_PI
4 判断设备在指定的区域内
CLCircularRegion //表示圆形区域的范围
center // 圆形范围的圆心
radius//
5 地理编码和反地理编码
地理编码: 根据用户描述获取地标信息 NSString -> CLPlacemark
反地理编码: 根据位置获取对应的描述信息 CLLocation -> CLPlacemar
CLGeocoder: // 地理编码
- geocodeAddressString: completionHandler: // 地理编码
- reverseGeocodeLocation: completionHandler: // 反地理编码
6 Mapkit 基本使用
CLPlacemark //表示地理位置信息, 包括坐标, 区域, 名称, 街道等
name // 该地标的名称
location // 地标的位置信息
addressDictionary // 保存地址信息的字典
7 添加大头针
MapView // 用于展示地图的视图
mapType // 地图类型
userTrackingMode // 追踪模式
//MKMapType 地图类型
MKMapTypeStandard // 标准
MKMapTypeSatellite // 卫星地图
MKMapTypeHybrid // 混合地图 (卫星地图 + 标准)
//MKUserTrackingMode 追踪模式
MKUserTrackingModeNone //不追踪
MKUserTrackingModeFollow // 追踪用户位置
MKUserTrackingModeFollowWithHeading, // 追踪用户位置与方向
// 地图的手势支持开关:
zoomEnabled // 放大缩小
scrollEnabled // 拖动
rotateEnabled // 旋转
/*-------- 添加大头针 --------*/
MKAnnotation协议(自定义大头针数据模型时需要遵守该协议)
注意在iOS9中通过代码创建的MapView上添加大头针无效
/**********************自定大头针********************/
MKPinAnnotationView //原生大头针视图
pinColor 大头针颜色选择(MKPinAnnotationColor)
MKPinAnnotationColor 自定义大头针颜色, iOS9新增属性
canShowCallout 允许大头针点击弹出视图
leftCalloutAccessoryView 弹出视图的左边辅助视图
rightCalloutAccessoryView 弹出视图的右边辅助视图
detailCalloutAccessoryView 自定义弹出详情视图, iOS9新增属性