IOS 手动集成百度地图时遇到的坑

最近集成百度地图,遇到了不少坑,耽误了一个下午,官方的说明和一些博主的说明相互冲突,找不到一篇合适的解决问题的文档,所以就在这里自己写一个,帮助别人也提醒自己下次不要犯错.

集成步骤

1.申请密钥
2.下载SDK,导入SDK
3.配置开发环境

申请密钥

这块简单,按照官方的链接来就可以了.
飞机票

下载SDK,导入SDK

官方有三种下载模式,如果是自己学习,建议全部下载.如果是项目运用,建议自定义下载,这样可以减少包体积,也提升下载速度.具体看下图.


下载模块.png
配置开发环境

重点来了

1 根据需要导入 .framework包

百度地图 iOS SDK 采用分包的形式提供 .framework包,请广大开发者使用时确保各分包的版本保持一致。其中BaiduMapAPI_Base.framework为基础包,使用SDK任何功能都需导入,其他分包可按需导入。

2 混合编译麻烦

官方说明的是:
静态库中采用Objective-C++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即在Xcode的Project -> Edit Active Target -> Build Setting 中找到 Compile Sources As,并将其设置为"Objective-C++"
但是
有的文档会告诉我们,这两个操作都要操作,不然有问题,当你两个都操作的时候,你会发现 这么做会有30个错误或者41个错误,具体有找不到包错误或者编译错误.
建议
Compile Sources As不需要设置成"Objective-C++",不变就可以了,只操作官方说明的前一部分,即因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm).

3 引入所需的系统库

百度地图SDK中提供了定位功能和动画效果,v2.0.0版本开始使用OpenGL渲染,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework、libsqlite3.0.tbd(xcode7以前为 libsqlite3.0.dylib)、CoreTelephony.framework 、libstdc++.6.0.9.tbd(xcode7以前为libstdc++.6.0.9.dylib)。

4 引入所需的第三方openssl库

这里注意了!!!!!!!!!
不要直接把libssl.a和libcrypto.a添加到工程,它会报路径错误的,正确的做法是,把这两个文件拖到自己工程文件中,然后再添加就好了.
添加方法: 在 >Build Phases-> Link Binary With Libaries中点击“+”按钮,在弹出的窗口中点击“Add Other”按钮,选择libssl.a和libcrypto.a添加到工程中

5 环境配置

在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。

6 引入mapapi.bundle资源文件

如果使用了基础地图功能,需要添加该资源,否则地图不能正常显示mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。如果您不需要使用内置的图片显示功能,则可以删除bundle文件中的image文件夹。您也可以根据具体需求任意替换或删除该bundle中image文件夹的图片文件。
方法:选中工程名,在右键菜单中选择Add Files to “工程名”…,从BaiduMapAPI_Map.framework||Resources文件中选择mapapi.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。

特别注意:如果在iOS9中使用了调起百度地图客户端功能,必须在"Info.plist"中进行如下配置,否则不能调起百度地图客户端。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>baidumap</string>
</array>

这个时候你在编译程序,就不会有报错了!!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容