高德地图
6.8.0或以上版本
开启后台定位
问题
如果APP中使用了高德地图并且具有后台定位功能,然后在3D地图升级到6.8.0或以上版本的时候,会发现新安装的APP没有定位授权提示框!!!并且在日志中发现[AMapLocationKit] 要在iOS 11及以上版本使用后台定位服务, 需要实现amapLocationManager:doRequireLocationAuth: 代理方法
查看SDK的更新日志:
高德地图iOS SDK(3D地图) V6.8.0 2019-04-16
解决问题
针对App Store关于“申请后台定位权限”的新审核要求,地图SDK内去掉定位的requestAlwaysAuthorization请求,用户可通过mapViewRequireLocationAuth回调来设置requestAlwaysAuthorization;
修复多实例下设置路况颜色可能会导致context冲突的问题;
修复瓦片图读取已损坏数据导致的crash问题;
解决delegate的warning问题。
解决方法
实现mapViewRequireLocationAuth方法
- (void)mapViewRequireLocationAuth:(CLLocationManager *)locationManager
{
[locationManager requestAlwaysAuthorization];
}
填坑
如果只是那么简单的解决方法,就不会浪费那么多时间去定位了。还有重要一点就是,设置delegate必须在设置showsUserLocation之前:
_mapView.delegate = self;
_mapView.showsUserLocation = YES;
_mapView.userTrackingMode = MAUserTrackingModeFollow;
如果delegate设置放此两个属性设置的后面,那么一直会提示”[AMapLocationKit] 要在iOS 11及以上版本使用后台定位服务, 需要实现amapLocationManager:doRequireLocationAuth: 代理方法“。并且么有任何提示也不会定位。
Done
下载了3D地图的Demo后才恍然大悟,一直在尝试不同的方案,但是一直在提示[AMapLocationKit] 要在iOS 11及以上版本使用后台定位服务, 需要实现amapLocationManager:doRequireLocationAuth: 代理方法。
// END 希望能够帮到有这个问题的小伙伴。
网友评论