轉載於:http://blog.csdn.net/lmj623565791/article/details/37729091
轉載於:http://blog.csdn.net/crazy1235/article/details/42614603
百度地圖SDK開發指南:http://developer.baidu.com/map/wiki/index.php?title=androidsdk/guide/introduction
雖然百度地圖網上相關代碼比較多,大多可能都是比較舊的版本,且百度地圖API的改動感覺也比較大,所以在此跟大家分享一下一天的勞動成功。
一、申請AK(API Key)
要想使用百度地圖sdk,就必須申請一個百度地圖的api key。申請流程挺簡單的。
首先註冊成爲百度的開發者,然後打開http://lbsyun.baidu.com/apiconsole/key這個網址,添加應用:
應用名稱可任意,創建應用最重要的一步是【安全碼】。安全碼是有【數字簽名】和【;】和【包名】組成。數字簽名指android的簽名證書的SHA1值。包名就是你所創建的項目的包的結構,是指AndroidManifest.xml中的manifest標籤下的package的值。
例如:E6:20:57:A9:D9:E9:0C:A4:C5:51:17:B7:C1:E1:F2:D7:CC:37:D7:B1;com.example.bdmap_sample_01
獲取數字簽名有兩種方法:
1. 第一種方法:使用eclipse查看。
打開eclipse的Windows->Preferences菜單,在Android下的【Build】中可以看到SHA1的值,如下圖:
2. 第二種方法:使用keytool工具(jdk自帶)查看。
在控制檯下,輸入【cd .android】,然後輸入【keytool -list -v -keystore debug.keystore】回車,然後提示你輸入【祕鑰庫口令】,輸入【android】回車然後就會顯示SHA1的值。
數字簽名搞定了,然後創建應用就ok了。創建完成之後,應用列表中會顯示相應的AK,也就是api key。
二、下載SDK開發包
打開http://lbsyun.baidu.com/sdk/download網址下載sdk,可以全部下載,也可以自定義下載。從V2.3.0之後的版本,SDK的開發包以可定製的形式提供下載,用戶可以根據自己的項目需要勾選相應的功能下載對應的SDK開發包。
三、在android項目中引用百度SDK
1. 將開發包裏的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爲您提供的全部功能了,拷貝完成後的工程目錄如下圖所示;
1). 在Eclipse 中選中工程,右鍵選 Properties->Java Build Path->Order and Export 使 Android Private Libraries處於勾選狀態;
2). Project -> clean-> clean all .
2. 在AndroidManifest.xml的application中添加開發祕鑰。
<!-- 添加開發祕鑰 -->
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="填寫你申請的AK" />
在AndroidManifest.xml中添加百度API所需權限:<!-- 百度API所需權限 -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_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.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
3. 在佈局文件中添加地圖控件:<!-- 添加地圖控件 -->
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
4. 在應用程序創建時初始化SDK引用的Context全局變量。public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各組件之前初始化context信息,傳入ApplicationContext
// 注意該方法要再setContentView方法之前實現
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
// 獲取地圖控件引用
mMapView = (MapView) findViewById(R.id.bmapview);
}
好了,經過這四步就能顯示地圖了~~
注意:在SDK各功能組件使用之前都需要調用
SDKInitializer.initialize(getApplicationContext());,因此我們建議該方法放在Application的初始化方法中
5. 不過地圖很耗電,所以有必要管理其聲明週期package com.example.bdmap_sample_01;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.MapView;
import android.os.Bundle;
import android.app.Activity;
import android.view.Window;
public class MainActivity extends Activity {
private MapView mMapView; // 百度地圖控件
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各組件之前初始化context信息,傳入ApplicationContext
// 注意該方法要再setContentView方法之前實現
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
// 獲取地圖控件引用
mMapView = (MapView) findViewById(R.id.bmapview);
}
protected void onDestroy() {
super.onDestroy();
// 在activity執行onDestroy時執行mMapView.onDestroy(),實現地圖生命週期管理
mMapView.onDestroy();
mMapView = null;
}
@Override
protected void onResume() {
super.onResume();
// 在activity執行onResume時執行mMapView. onResume (),實現地圖生命週期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
// 在activity執行onPause時執行mMapView. onPause (),實現地圖生命週期管理
mMapView.onPause();
}
}
好了,完成。其實百度開發指南上對HelloBaiduMap這篇也極其清楚~~~~
Android 百度地圖 SDK v3.0.0 (一)的源碼: 源碼點擊下載