利用 Core Location 和 Map Kit 定位:开发指南
1. 明智使用定位管理器
若仅需确定当前位置且无需持续更新,应让定位委托在获取应用所需信息后立即停止定位管理器。若需轮询,尽可能尽快停止。因为只要从定位管理器获取更新,就会消耗用户电池电量。
要让定位管理器停止向其委托发送更新,可调用 stopUpdatingLocation
方法,示例代码如下:
[locationManager stopUpdatingLocation];
2. 定位管理器委托
定位管理器委托必须遵循 CLLocationManagerDelegate
协议,该协议定义了多个可选方法。其中一个方法会在用户对使用定位服务的授权状态改变时被调用;另一个方法会在确定当前位置或检测到位置变化时被调用;还有一个方法会在定位管理器遇到错误时被调用。
以下是这些方法的调用场景:
| 方法 | 调用场景 |
| — | — |
| 授权状态改变时调用的方法 | 用户对使用定位服务的授权状态改变 |
| 确定当前位置或检测到位置变化时调用的方法 | 定位管理器确定当前位置或检测到位置变化 |
| 遇到错误时调用的方法 | 定位管理器遇到错误 |
3. 获取位置更新
当定位管理器想向其委托告知当前位置时,会调用 locationManager:didUpdateLocations:
方法。该方