天天看點

[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題

最近做android百度地圖,但是使用baidumapapi_v2_3_1.jar和libbaidumapsdk_v2_3_1.so顯示百度地圖時總是遇到問題——隻顯示網格而沒有顯示地圖,網絡連接配接和apikey申請都是正确的,就是不知道為什麼不能顯示,網上也有很多人遇到這個問題,有的是sdk更新不相容.而且網上很多百度地圖都是使用v2.3.1版本,後來沒有辦法隻有通過baidumapapi_v2_4_1.jar完成顯示地圖.

    其中需要注意的是使用2.3.1時調用manager.init("apikey",null)初始化地圖,而2.4.1版本是通過在androidmanifest.xml的meta-data中輸入ak.

   ps:這僅僅是一篇android開發百度地圖的基礎文章,網上資料也很多,但該方法可行.參考郭神《android第一行代碼》中方法也是v2.3.1隻能顯示網格而沒有地圖.

參考資料:

    首先,注冊成為一名百度開發者.

[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題

   送出注冊成功後如下圖所示.

[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題

   點選"去建立應用>>",如下圖所示,這裡顯示你的應用清單.

[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題

   此時點選“建立應用”即可申請apikey,選擇類型以前我們見過的部落格書籍通常是選擇"for mobile"應用類型,這裡已經沒有該選項了,故我選擇"for android",同時輸入安全碼!

[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題

    這裡你可能疑惑"安全碼"是什麼?它是由"數字簽名;包名"組成,其中數字簽名是我們打包程式時keystore的sha1指紋,通過點選eclipse的"窗體(window)->首選項(preferences)->android->build"檢視,同時也可參照上面官方文檔連結通過cmd擷取.而包名就是應用程式對應的包名.如下:

    e5:ba:71:31:9d:a3:bf:92:8d:2e:8f:3a:6d:0a:93:5b:3d:36:59:08;com.example.baidumapshow

[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題

   點選"送出"後即可擷取的ak:qwanhfq0ty2qmdyh3nrr0gqx

[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題

下載下傳android sdk位址:

    在建立好的應用程式baidumapshow項目中libs目錄下複制baidumapapi_v2_4_1.jar檔案,同時libs目錄下建立armeabi目錄,并拷貝libbaidumapsdk_v2_4_1.so檔案.如下圖所示:

[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題

    其中該工程包名為com.eample.baidumapshow,libs目錄用于存放第三方jar包,armeabi目錄存放ndk生成so檔案調用其c/c++函數庫.同時需要導入jar包,右鍵工程->"properties(屬性)"->"java建構路徑",如下圖所示添加jar.

[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題

1.activity_main.xml布局檔案

    布局檔案中通過加載百度地圖控件mapview,它是由百度提供的自定義控件故需要加上完整包名,同時該控件需要接受點選事件clickable設定為true.

2.mainactivity.java檔案

   3.androidmanifest.xml中申明權限和apikey

   其中最重要的是添加apikey,方法mbmapmanager.init(null)調用.

   <meta-data 

       android:name="com.baidu.lbsapi.api_key"  

       android:value="qwanhfq0ty2qmdyh3nrr0gqx">

   </meta-data> 

4.運作效果如下圖所示

[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題
[android] 百度地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題

    最後希望文章對大家有所幫助,這是我幫同學做百度地圖簡單研究的一篇基礎性文章,其中後面準備講講百度地圖poi興趣搜尋和添加标注等功能吧!對于前面的問題我也不知道為什麼總是顯示網格而沒有地圖,但是通過v2_4_1能顯示地圖.

    我猜測其原因是以前申請的apikey調用方法可以實作顯示地圖,但是由于百度新更新的sdk方法不相容,現在申請的apikey需要使用新的方法,故上面的才能顯示,個人意見,不知道是否正确啊!

參考資料:

    1.郭霖大神《android第一行代碼》第11章基于百度地圖的開發