更新的Xcode10移除了ibstdc++6.0.9库,项目中用到的百度地图sdk版本太低,不支持最新的libc++库,只能更新百度地图sdk到V4.2版本。以下为更新时遇到的一些问题。
1、百度只提供了支持bitcode版本的sdk,如果自己的项目不支持bitcode,需要自己在终端剥离不支持bitcode的版本。
在终端中cd到对应目录下,执行下列代码,如下
xcrun bitcode_strip -r BaiduMapAPI_Base -o BaiduMapAPI_Base
剥离后源文件体积会减小,需要其他模块的非bitcode版本可以依次进入响应目录进行剥离。
2、坐标系差别造成定位不准的问题
坐标系分三种:
1、世界标准地理坐标(WGS-84) GPS定位坐标系
2、中国国测局地理坐标(GCJ-02)<火星坐标>高德,腾讯等大部分地图使用的坐标系
3、其他坐标系 例如:百度地理坐标(BD-09)
第一种坐标系在国内是不允许直接使用的,国内app大部分都是使用第二种,第三种则是在第二种上再加密形成第三种坐标系,例如百度的BD-09,如果经纬度和坐标系不对应则会造成定位偏移。
PS:iOS系统自带的CLLocationManager定位坐标是第一种。现在苹果系统自带的地图使用的是高德地图,所以苹果地带的地图应用,用的是GCJ-02的坐标系统。但是代码中CLLocationManager获取到的是WGS84坐标系的坐标。要经过转换后才能赋值给百度sdk使用,这里使用
https://github.com/JackZhouCn/JZLocationConverter的算法来转换。