高德地图6.8.0定位修改的修复方法

2,213 阅读1分钟

高德地图

高德地图 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 希望能够帮到有这个问题的小伙伴。