1. 程式人生 > >百度地圖SDK使用過程中的那些坑

百度地圖SDK使用過程中的那些坑

  1. 使用跟demo相同的Key,並且聯網成功,授權成功,但是在初始化地圖的時候提示引擎初始化失敗,解決方法:檢查SDK中的資原始檔mapapi.bundle是否匯入,如果沒有匯入,匯入即可。
  2. 由於百度地圖的SDK分為模擬器上使用的SDK和真機上使用的SDK,如果不慎將SDK導錯(比如,在真機測試時,匯入了模擬器上使用的SDK),會出現以下錯誤:
    這裡寫圖片描述
    將在模擬器上,使用真機SDK,出現的錯誤,
    這裡寫圖片描述
    解決辦法,刪除當前的SDK,匯入正確的SDK。
    但是,由於在實際的開發過程中,每次除錯就要重新匯入SDK是一件特別煩得事情,因此,我們可以將百度地圖的兩個SDK進行合併。合併的步驟如下所示:
    (1)開啟中終端,使用cd命令進入到要合併的檔案所在的路徑,比如:cd /Users/[使用者名稱]/Desktop/百度/Release-iphoneos/BaiduMapAPI.framework
    (2)使用lipo –info BaiduMapAPI 檢視當前庫的資訊 ,
    這裡寫圖片描述

    armv7 armv7s arm64 表示只支援真機。同樣的操作步驟可以檢視模擬器的。輸出i386 x86_64表示只支援模擬器。
  3. 合併檔案。使用命令
    lipo -create xxxx/ BaiduMapAPI xxxxx/ BaiduMapAPI -output BaiduMapAPI進行檔案的合併。其中XXXX表示檔案的路徑,合併操作完成之後將合併後的檔案拷貝到BaiduMapAPI.framework檔案下,將之前的檔案替換掉。上述操作完成之後,進入到從終端進入到BaiduMapAPI.framework資料夾下,使用命令lipo –info BaiduMapAPI 命令檢視當前庫的資訊。
    這裡寫圖片描述

    如果輸出資訊為 armv7 armv7s i386 x86_64 arm64 表示當前庫同時支援模擬器和真機。
  4. 如果匯入百度地圖SDK之後,需要匯入導航SDK,但是根據官網的配置,配置完成之後發現,使用模擬器編譯報錯,錯誤資訊如下:
    duplicate symbol _DispatchVMsgToObservers in:
    /Users/[路徑]/Classes/ThirdPart/BaiduNavi_iOSSDK_v2.0.4_Lib/libbaiduNaviSDK.a(VMsg.o)
    /Users/[路徑]/Classes/ThirdPart/BaiduMapAPI.framework/BaiduMapAPI(VMsg.o)
    ld: 1 duplicate symbol for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    解決辦法:在真機上編譯即可通過。只有在模擬器上會有此問題出現。