天天看點

Android下 使用百度地圖sdk

百度地圖 android sdk是一套基于android 2.1(v1.3.5及以前版本支援android 1.5以上系統)及以上版本裝置的應用程式接口。可以使用該套 sdk開發适用于android系統移動裝置的地圖應用,通過調用地圖sdk接口,您可以輕松通路百度地圖服務和資料,建構功能豐富、互動性強的lbs(地圖類)應用程式。

百度地圖android sdk提供的所有服務是免費的,接口使用無次數限制。您需申請密鑰(key)後,才可使用百度地圖android sdk。任何非營利性産品請直接使用。這弦外之音就是盈利的産品必須幫百度給錢。

一、百度地圖api平台。

百度地圖api網址:http://developer.baidu.com/map/sdk-android.htm

百度地圖開發步驟是①擷取密鑰 ②申請新密鑰及檢視原先申請的密鑰 ③開發指南 在安卓平台上使用百度地圖的開發指南 ④類參考 地圖庫所提供的類及方法說明相關下載下傳 ⑤開發所使用的相關包及說明示例下例

哝,這就是百度地圖的apk平台的界面:

Android下 使用百度地圖sdk

首先,我們來申請key。

步驟也非常的簡單:

①點選擷取密鑰 ②進入密鑰申請頁并閱讀相關的使用條款 ③勾選 已閱讀并同意條款 ④填寫應用名稱 填寫一下應用的相應功能及描述 ⑤輸入驗證碼确定後 ⑥密鑰即可申請成功

我申請的key如下圖所示:

Android下 使用百度地圖sdk

如何把申請下來的jar包導入到項目中了。

一、在工程裡建立libs檔案夾(若不存在的話),将開發包裡的baidumapapi_v2_1_1.jar拷貝到libs根目錄下,将libapp_baidumapapplib_v2_1_1.so和libvi_voslib.so 拷貝到libs\armeabi目錄下。

二、項目屬性中java build path->order and export中,确定android private libaries與android dependencies這兩項前面的選擇框被選上後,

三、點确定 菜單project->clean重新編譯項目後就可以正常使用地圖中的功能進行程式設計了。

四、上圖包中的liblocksdk3.1.jar及對應的so檔案是用于定位與搜尋功能的,如果不需要可以不加入到項目當中

jar包的架構如下圖所示:

Android下 使用百度地圖sdk

到入jar包的樣子也如下圖所示:

Android下 使用百度地圖sdk

在清單檔案下,要添加一下的權限。

<supports-screens android:anydensity="true" android:largescreens="true" android:normalscreens="true"  android:resizeable="true" android:smallscreens="true" />

對需要加載地圖的activity進行屬性設定

<activity android:name="com.dfrz.map.dfrzmapactivity" android:configchanges="orientation|keyboardhidden|screensize" android:label="@string/app_name" android:screenorientation="sensor" > </activity>

這些準備工作做好以後,我們需要到入相應的map控件

<com.baidu.mapapi.map.mapview android:id="@+id/bmapsview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:clickable="true" />

上述xml的源代碼就是這個就是加載百度地圖的控件框,這個布局你可以根據自己的需要進行調整,或是放置到你的activity需要的地方去。此控件需要接收到點選事件,是以需要把clickable設定成true。

百度的地圖的原理就是這樣的。。。。。。。。。。。

地圖、定位、搜尋功能都需要用bmapmanager對象來管理, bmapmanager提供四個接口:init()、start()、stop()、destroy()。在應用程式裡生成bmapmanager 對象并初始化,在程式退出時調用destroy(),在需要使用sdk功能的activity的oncreate()方法裡調用start()方法,ondestroy()方法裡調用stop()方法,或者onresume()/onpause()分别調用start()和stop()。 常用方法: destroy() : 在程式退出前調用  boolean init(java.lang.string strkey, mkgenerallistener  listener) 初始化地圖引擎,需要送入申請的百度地圖key boolean start() :開啟百度地圖api  boolean stop(): 終止百度地圖api,調用此函數後,不會再發生回調。

mapview——百度地圖的顯示者。

一個顯示地圖的視圖控件,當被焦點選中時,它能捕獲按鍵事件和觸摸手勢去平移和縮放地圖 setbuiltinzoomcontrols(boolean on):設定是否啟用内置的縮放控件 getcontroller():傳回地圖的mapcontroller,這個對象可用于控制和驅動平移和縮放 setdoubleclickzooming(boolean bdoubleclickzooming) : 設定mapview是否支援輕按兩下放大效果 getoverlays():擷取當時地圖控件中的已有圖層 refresh(): 重新整理此地圖控件。

怎麼用百度地圖實作了定位了,這就需要locationclient

定位處理功能的核心類 registerlocationlistener(bdlocationlistener)接收到定位資料後可由指定監聽器中的onreceivelocation(bdlocation)的方法來接收相關的資料并做相關的處理 構造: new locationclient(getapplicationcontext()) setlocoption(locationclientoption)設定定位的參數 start()啟動定位功能,此功能是持續的,可以定義間隔重新整理時間 stop()結束定位功能,但前面設定的定位參數不會消失,可以再啟動 requestlocation() 發起異步定位請求,如果位置沒有變化,不會發起網絡請求,直接傳回上次的位置。(2次間隔需要大于1秒)

locationclientoption  用于定位的操作的類。

設定定位功能的定位方式 disablecache(boolean) 真表示禁用緩存定位 setopengps(boolean) 是否使用gps定位,前提是手機打開了gps定位 setaddrtype(string) 當字串為"all"時傳回此位置位址資訊,其它不傳回 setcoortype(string) 設定傳回坐标的格式 gcj02 - 國測局 bd09百度墨卡托 bd0911百度經緯坐标(手機預設) setscanspan(int) 定時定位的時間間隔(ms) 此值大于1000時,每隔此值指定的時間就會發起一次定位 此值小于1000時或不設定此值時,調用一次requestlocation()方法則定位一次

這是我們需要定義mainactivity的類。相應源代碼如圖所示:

protected void ondestroy() { mapview.destroy(); if (mapmanager != null) { mapmanager.destroy(); mapmanager = null; } super.ondestroy(); }

 有了這些準備以後,相應運作的效果如下:

Android下 使用百度地圖sdk

這就是android下百度地圖應用的大概步驟。

上一篇: ADB用法

繼續閱讀