IOS 手動集成百度地圖時遇到的坑

最近集成百度地圖,遇到了不少坑,耽誤了一個下午,官方的說明和一些博主的說明相互沖突,找不到一篇合適的解決問題的文檔,所以就在這里自己寫一個,幫助別人也提醒自己下次不要犯錯.

集成步驟

1.申請密鑰
2.下載SDK,導(dǎo)入SDK
3.配置開發(fā)環(huán)境

申請密鑰

這塊簡單,按照官方的鏈接來就可以了.
飛機票

下載SDK,導(dǎo)入SDK

官方有三種下載模式,如果是自己學(xué)習(xí),建議全部下載.如果是項目運用,建議自定義下載,這樣可以減少包體積,也提升下載速度.具體看下圖.


下載模塊.png
配置開發(fā)環(huán)境

重點來了

1 根據(jù)需要導(dǎo)入 .framework包

百度地圖 iOS SDK 采用分包的形式提供 .framework包,請廣大開發(fā)者使用時確保各分包的版本保持一致。其中BaiduMapAPI_Base.framework為基礎(chǔ)包,使用SDK任何功能都需導(dǎo)入,其他分包可按需導(dǎo)入。

2 混合編譯麻煩

官方說明的是:
靜態(tài)庫中采用Objective-C++實現(xiàn),因此需要您保證您工程中至少有一個.mm后綴的源文件(您可以將任意一個.m后綴的文件改名為.mm),或者在工程屬性中指定編譯方式,即在Xcode的Project -> Edit Active Target -> Build Setting 中找到 Compile Sources As,并將其設(shè)置為"Objective-C++"
但是
有的文檔會告訴我們,這兩個操作都要操作,不然有問題,當你兩個都操作的時候,你會發(fā)現(xiàn) 這么做會有30個錯誤或者41個錯誤,具體有找不到包錯誤或者編譯錯誤.
建議
Compile Sources As不需要設(shè)置成"Objective-C++",不變就可以了,只操作官方說明的前一部分,即因此需要您保證您工程中至少有一個.mm后綴的源文件(您可以將任意一個.m后綴的文件改名為.mm).

3 引入所需的系統(tǒng)庫

百度地圖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 環(huán)境配置

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

6 引入mapapi.bundle資源文件

如果使用了基礎(chǔ)地圖功能,需要添加該資源,否則地圖不能正常顯示mapapi.bundle中存儲了定位、默認大頭針標注View及路線關(guān)鍵點的資源圖片,還存儲了矢量地圖繪制必需的資源文件。如果您不需要使用內(nèi)置的圖片顯示功能,則可以刪除bundle文件中的image文件夾。您也可以根據(jù)具體需求任意替換或刪除該bundle中image文件夾的圖片文件。
方法:選中工程名,在右鍵菜單中選擇Add Files to “工程名”…,從BaiduMapAPI_Map.framework||Resources文件中選擇mapapi.bundle文件,并勾選“Copy items if needed”復(fù)選框,單擊“Add”按鈕,將資源文件添加到工程中。

特別注意:如果在iOS9中使用了調(diào)起百度地圖客戶端功能,必須在"Info.plist"中進行如下配置,否則不能調(diào)起百度地圖客戶端。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>baidumap</string>
</array>

這個時候你在編譯程序,就不會有報錯了!!!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容