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