使用高德地图定位SDK中的单次定位API:
- (BOOL)requestLocationWithReGeocode:(BOOL)withReGeocode completionBlock:(AMapLocatingCompletionBlock)completionBlock;
逆地理传YES时,block回调location有值,但是regeocode对象为空,且error如下:
Error Domain=AMapLocationErrorDomain Code=5 "取消" UserInfo={NSLocalizedDescription=取消}
造成这种情况的原因是逆地理信息还未获取到,但locationManager对象已经销毁。
解决方法很简单,即延长locationManager对象的生命周期,保证在逆地理信息获取过程中locationManager不要被销毁,比如设置成属性持有。
笔者的项目中将定位功能抽象成了一个类,这个类是单例,所以笔者将locationManager设置成了这个类的属性,问题得到解决,仅供参考。