百度地圖 Android SDK是一套基于Android 2.1(v1.3.5及以前版本支持android 1.5以上系統(tǒng))及以上版本設(shè)備的應(yīng)用程序接口?梢允褂迷撎 SDK開(kāi)發(fā)適用于Android系統(tǒng)移動(dòng)設(shè)備的地圖應(yīng)用,通過(guò)調(diào)用地圖SDK接口,您可以輕松訪問(wèn)百度地圖服務(wù)和數(shù)據(jù),構(gòu)建功能豐富、交互性強(qiáng)的LBS(地圖類)應(yīng)用程序。
百度地圖Android SDK提供的所有服務(wù)是免費(fèi)的,接口使用無(wú)次數(shù)限制。您需申請(qǐng)密鑰(key)后,才可使用百度地圖Android SDK。任何非營(yíng)利性產(chǎn)品請(qǐng)直接使用。這弦外之音就是盈利的產(chǎn)品必須幫百度給錢。
一、百度地圖api平臺(tái):
百度地圖API網(wǎng)址:http://developer.baidu.com/map/sdk-android.htm
百度地圖開(kāi)發(fā)步驟是①獲取密鑰 ②申請(qǐng)新密鑰及查看原先申請(qǐng)的密鑰 ③開(kāi)發(fā)指南 在安卓平臺(tái)上使用百度地圖的開(kāi)發(fā)指南 ④類參考 地圖庫(kù)所提供的類及方法說(shuō)明相關(guān)下載 ⑤開(kāi)發(fā)所使用的相關(guān)包及說(shuō)明示例下例
噥,這就是百度地圖的apk平臺(tái)的界面:
首先,我們來(lái)申請(qǐng)key。
步驟也非常的簡(jiǎn)單:
①點(diǎn)擊獲取密鑰 ②進(jìn)入密鑰申請(qǐng)頁(yè)并閱讀相關(guān)的使用條款 ③勾選 已閱讀并同意條款 ④填寫應(yīng)用名稱 填寫一下應(yīng)用的相應(yīng)功能及描述 ⑤輸入驗(yàn)證碼確定后 ⑥密鑰即可申請(qǐng)成功
我申請(qǐng)的key如下圖所示:
如何把申請(qǐng)下來(lái)的jar包導(dǎo)入到項(xiàng)目中了。
一、在工程里新建libs文件夾(若不存在的話),將開(kāi)發(fā)包里的baidumapapi_v2_1_1.jar拷貝到libs根目錄下,將libapp_BaiduMapApplib_v2_1_1.so和libvi_voslib.so 拷貝到libs\armeabi目錄下。
二、項(xiàng)目屬性中Java Build Path->Order and Export中,確定Android Private Libaries與Android Dependencies這兩項(xiàng)前面的選擇框被選上后,
三、點(diǎn)確定 菜單Project->clean重新編譯項(xiàng)目后就可以正常使用地圖中的功能進(jìn)行編程了。
四、上圖包中的liblockSDK3.1.jar及對(duì)應(yīng)的so文件是用于定位與搜索功能的,如果不需要可以不加入到項(xiàng)目當(dāng)中
jar包的架構(gòu)如下圖所示:
到入jar包的樣子也如下圖所示:
在清單文件下,要添加一下的權(quán)限。
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" />
對(duì)需要加載地圖的Activity進(jìn)行屬性設(shè)置
<activity android:name="com.dfrz.map.DFRZMapActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/app_name" android:screenOrientation="sensor" > </activity>
這些準(zhǔn)備工作做好以后,我們需要到入相應(yīng)的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的源代碼就是這個(gè)就是加載百度地圖的控件框,這個(gè)布局你可以根據(jù)自己的需要進(jìn)行調(diào)整,或是放置到你的Activity需要的地方去。此控件需要接收到點(diǎn)擊事件,所以需要把clickable設(shè)置成true。
百度的地圖的原理就是這樣的。。。。。。。。。。。
地圖、定位、搜索功能都需要用BMapManager對(duì)象來(lái)管理, BMapManager提供四個(gè)接口:init()、start()、stop()、destroy()。在應(yīng)用程序里生成BMapManager 對(duì)象并初始化,在程序退出時(shí)調(diào)用destroy(),在需要使用sdk功能的Activity的onCreate()方法里調(diào)用start()方法,onDestroy()方法里調(diào)用stop()方法,或者onResume()/onPause()分別調(diào)用start()和stop()。 常用方法: destroy() : 在程序退出前調(diào)用 boolean init(java.lang.String strKey, MKGeneralListener listener) 初始化地圖引擎,需要送入申請(qǐng)的百度地圖Key boolean start() :開(kāi)啟百度地圖API boolean stop(): 終止百度地圖API,調(diào)用此函數(shù)后,不會(huì)再發(fā)生回調(diào)。
MapView——百度地圖的顯示者
一個(gè)顯示地圖的視圖控件,當(dāng)被焦點(diǎn)選中時(shí),它能捕獲按鍵事件和觸摸手勢(shì)去平移和縮放地圖 setBuiltInZoomControls(boolean on):設(shè)置是否啟用內(nèi)置的縮放控件 getController():返回地圖的MapController,這個(gè)對(duì)象可用于控制和驅(qū)動(dòng)平移和縮放 setDoubleClickZooming(boolean bDoubleClickZooming) : 設(shè)置mapview是否支持雙擊放大效果 getOverlays():獲取當(dāng)時(shí)地圖控件中的已有圖層 refresh(): 刷新此地圖控件。
怎么用百度地圖實(shí)現(xiàn)了定位了,這就需要LocationClient
定位處理功能的核心類 registerLocationListener(BDLocationListener)接收到定位數(shù)據(jù)后可由指定監(jiān)聽(tīng)器中的onReceiveLocation(BDLocation)的方法來(lái)接收相關(guān)的數(shù)據(jù)并做相關(guān)的處理 構(gòu)造: new LocationClient(getApplicationContext()) setLocOption(LocationClientOption)設(shè)置定位的參數(shù) start()啟動(dòng)定位功能,此功能是持續(xù)的,可以定義間隔刷新時(shí)間 stop()結(jié)束定位功能,但前面設(shè)置的定位參數(shù)不會(huì)消失,可以再啟動(dòng) requestLocation() 發(fā)起異步定位請(qǐng)求,如果位置沒(méi)有變化,不會(huì)發(fā)起網(wǎng)絡(luò)請(qǐng)求,直接返回上次的位置。(2次間隔需要大于1秒)
LocationClientOption 用于定位的操作的類。
設(shè)置定位功能的定位方式 disableCache(boolean) 真表示禁用緩存定位 setOpenGPS(boolean) 是否使用GPS定位,前提是手機(jī)打開(kāi)了GPS定位 setAddrType(String) 當(dāng)字串為"all"時(shí)返回此位置地址信息,其它不返回 setCoorType(String) 設(shè)置返回坐標(biāo)的格式 gcj02 - 國(guó)測(cè)局 bd09百度墨卡托 bd0911百度經(jīng)緯坐標(biāo)(手機(jī)默認(rèn)) setScanSpan(int) 定時(shí)定位的時(shí)間間隔(ms) 此值大于1000時(shí),每隔此值指定的時(shí)間就會(huì)發(fā)起一次定位 此值小于1000時(shí)或不設(shè)置此值時(shí),調(diào)用一次requestLocation()方法則定位一次
這是我們需要定義mainactivity的類。相應(yīng)源代碼如圖所示:
protected void onDestroy() { mapView.destroy(); if (mapManager != null) { mapManager.destroy(); mapManager = null; } super.onDestroy(); }
有了這些準(zhǔn)備以后,相應(yīng)運(yùn)行的效果如下:
這就是android下百度地圖應(yīng)用的大概步驟。