1. 标准定位服务
- 基于gps/蓝牙/基站/wifi定位, 具体使用哪种,苹果有自己规则
- 优点: 定位精确度高
- 缺点: 程序关闭,就没法获取位置 ,而且耗电
2. 显著位置变化定位服务
- 基于 基站定位, 必须要求设备有电话模块
- 优点: 当app被完全关闭时,也可以接收到位置通知,并让app进入到后台处理
- 缺点: 定位精度低
应用场景:
如果要求定位及时,精度较高,并且运行时间较短,可使用标准定位;
如果长时间监控用户位置,用户移动速度比较快(例如打车软件),可使用后者
单次定位
requestLocation 头文件:
该服务将尝试确定定位精度根据desiredaccuracy属性。定位更新将通过标准的代理回调
如果最佳的可用定位具有较低的精度,那么它将在超时时通过标准的代理回调。
如果没有定位可以确定,回调代理方法LocationManager:didfailwitherror:将交付错误定位不明。
只能有一个突出的定位的要求,该方法不能同时使用startUpdatingLocation() 或 allowDeferredLocationUpdates。调用这些方法将立即取消定位请求。方法stopUpdatingLocation() 可以用来明确取消请求。
代码: [self.locationM requestLocation];
功能:获取一次位置信息
实现逻辑
- (1) 按照定位精确度从低到高进行排序,逐个进行定位.如果在有效时间内, 定位到了精确度最好的位置, 那么就把对应的位置通过代理告知外界.
- (2) 如果获取到的位置不是精确度最高的那个,也会在定位超时后,通过代理告诉外界.
注意事项:
1.必须实现CLLocationManagerDelegate
代理方法
//当定位失败的时候会调用该方法
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
print("定位失败")
}
2.不能与startUpdatingLocation()方法同时使用