本篇通過一個簡單的示例一步步介紹如何在Android應用中使用百度地圖api。
一、下載百度地圖移動版API(Android)開發包:
開發者可在百度地圖Android SDK的下載頁面下載到最新版的地圖SDK,可根據自己的需求下載自定義的Android SDKd的jar和Demo,下載地址爲:http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download
在使用百度地圖SDK爲您提供的各種LBS能力之前,您需要獲取百度地圖移動版的開發密鑰,該密鑰與您的百度賬戶相關聯。因此,您必須先有百度帳戶,才能獲得開發密鑰。並且,該密鑰與您創建的過程名稱有關,具體流程請參考如下介紹。
Key的申請地址爲:http://lbsyun.baidu.com/apiconsole/key
注意:
1. 每個Key唯一對應一個APP,如果您的APP修改了包名或者發佈的時候打包的簽名文件改變了,則改變前後的APP被視爲兩個APP。因此,多個APP【包括一份代碼多個包名打包】需申請多個與之對應的Key;
2. 在同一個工程中同時使用百度地圖SDK、定位SDK、導航SDK 和全景SDK的全部或者任何組合,可以共用同一個key;
3. 如果您在Android SDK開發過程中使用了LBS雲服務(如LBS雲檢索功能),則需要爲該服務單獨申請一個“服務端”類型的key,代碼中調用LBS雲服務接口時使用此key即可,注意:此key一定要和AndroidManifest.xml中配置API_KEY的key區分開;
4. Android SDK自v2.1.3版本開始採用了全新的Key驗證體系,v2.1.3之前的版本不再維護,如果升級到新版本SDK(v2.1.3及之後的版本)時需要在API控制檯重新申請key進行替換。
三、配置的環境及創建項目:
1)、Eclipse工程配置方法
第一步:在工程裏新建libs文件夾,將開發包裏的baidumapapi_vX_X_X.jar拷貝到libs根目錄下,將libBaiduMapSDK_vX_X_X.so拷貝到libs\armeabi目錄下(官網demo裏已有這兩個文件,如果要集成到自己的工程裏,就需要自己添加),拷貝完成後的工程目錄如下圖所示;
第二步:在工程屬性->Java Build Path->Libraries中選擇“Add External JARs”,選定baidumapapi_vX_X_X.jar,確定後返回。
通過以上兩步操作後,您就可以正常使用百度地圖SDK爲您提供的全部功能了。
注意:由於adt插件升級,若您使用Eclipse adt 22的話,需要對開發環境進行相應的設置,方法如下:
1. 在Eclipse
中選中工程,右鍵選 Properties->Java Build Path->Order and Export 使 Android Private Libraries處於勾選狀態;
2. Project -> clean-> clean all .
2)、Android
Studio工程配置方法
第一步:導入百度地圖SDK 的jar和so包到項目:在工程app/libs目錄下放入從“百度地圖開放平臺官網API”下載的jar包(注:需要選擇jar包右鍵鼠標進行依賴jar包),在src/main/目錄下新建jniLibs目錄放入“百度地圖開放平臺官網API”下載的so包如下圖所示,工程會自動加載src目錄下的so動態庫,,注意jar和so的前3位版本號必須一致,並且保證使用一次下載的文件夾中的兩個文件,不能不同功能組件的jar或so交叉使用。
so的配置也可以參考demo給出的目錄結構,在app工程路徑下,新建libs,並在libs目錄下放入對應不同CPU架構的so文件。這樣工程並不會自動加載libs下的so,需在gradle編譯時,通過加入代碼: jniLibs.srcDir 'libs' 來說明so的路徑爲該libs路徑。
第二步:工程配置還需要把jar包集成到自己的工程中,如圖上圖所示,放入libs目錄下。對於每個jar文件,右鍵-選擇Add
As Library,導入到工程中。對應在build.gradle生成工程所依賴的jar文件說明,如圖所示:
jar的配置也可參考eclipse方法,進行以下操作:
1.菜單欄選擇 File —>Project Structure。
2.在彈出的Project Structure 對話框中, 選擇module, 然後點擊 Dependencies 選項卡.點擊綠色的加號選擇File dependency. 然後選擇要添加的jar包即可 完成上邊的操作後在app目錄下的build.gradle文件中,會有引入的類庫。
如有不太懂可以到百度官網搜索:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/buildproject
四、對新創建的項目添加百度地圖相關的配置:
百度地圖SDK爲開發者提供了便捷的顯示百度地圖數據的接口,通過以下幾步操作,即可在您的應用中使用百度地圖數據:
第一步:創建並配置工程(具體方法參見工程配置部分的介紹);
第二步:在AndroidManifest中添加開發密鑰、所需權限等信息;
(1)在application中添加開發密鑰APP Key
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="您的APP Key" />
2)添加所需權限
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<!-- 這個權限用於進行網絡定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 這個權限用於訪問GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用於訪問wifi網絡信息,wifi信息會用於進行網絡定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 獲取運營商信息,用於支持提供運營商信息相關的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 這個權限用於獲取wifi的獲取權限,wifi信息會用來進行網絡定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- 用於讀取手機當前的狀態 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 寫入擴展存儲,向擴展卡寫入數據,用於寫入離線定位數據 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 訪問網絡,網絡定位需要上網 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡讀取權限,用戶寫入離線定位數據 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- 來電消音 -->
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 攝影機 -->
<uses-permission android:name="android.permission.CAMERA" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true" />
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote">
<intent-filter>
<action android:name="com.baidu.location.service_v2.2" />
</intent-filter>
</service>
//在使用SDK各組件之前初始化context信息,傳入ApplicationContext SDKInitializer.initialize(getApplicationContext());
注意:在SDK各功能組件使用之前都需要調用
SDKInitializer.initialize(getApplicationContext());,因此我們建議該方法放在Application的初始化方法中
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
完成以上步驟後,運行程序,即可在您的應用中顯示如下地圖:
v3.0.0版本資源包 BaiduMap_AndroidSDK_v3.0.0_All.zip v3.1.0版本資源包 BaiduMap_AndroidSDK_v3.1.0_All.zip v3.1.1版本資源包 BaiduMap_AndroidSDK_v3.1.1_All.zip v3.2.0版本資源包 BaiduMap_AndroidSDK_v3.2.0_All.zip v3.3.0版本資源包 BaiduMap_AndroidSDK_v3.3.0_All.zip v3.4.0版本資源包 BaiduMap_AndroidSDK_v3.4.0_All.zip v3.5.0版本資源包 BaiduMap_AndroidSDK_v3.5.0_All.zip v3.6.0版本資源包 BaiduMap_AndroidSDK_v3.6.0_All.zip v3.7.3版本資源包:http://pan.baidu.com/s/1gfx6Wxl 【3.7.0->3.7.3 變 更 】 [ 檢 索 功 能]
爲兼容一些行政區邊界不連續,行政區邊界數據檢索接口 List<LatLng> getPolylines() 變更爲 List<List<LatLng>> getPolylines()接口,適配邊界多個形狀區域的情況。
|