01.(最新版)百度地圖§環境配置,01.
轉載請標明:http://blog.csdn.net/u012637501/article/details/45588377
一、Eclipse工程環境配置
1.下載SDK與申請Key
參見http://developer.baidu.com/map/index.php?title=androidsdk/guide/key。需要注意的是,在執行keytool命令出現命令不存在異常。keytool工具在JDK的bin檔案夾下面,可以將bin目錄的絕對路徑添加到PATH環境變數中即可。
百度地圖開發人員:http://developer.baidu.com/map/
2.添加jar包、.so檔案到工程
在工程裡建立libs檔案夾,將開發包裡的BaiduLBS_Android.jar(基礎地圖&定位)拷貝到libs根目錄下,將libBaiduMapSDK_v3_4_0_7.so拷貝到libs\armeabi目錄下(官網demo裡已有這兩個檔案,如果要整合到自己的工程裡,就需要自己添加),拷貝完成後的工程目錄如所示;
3.勾選" Android Private Libraries"
由於adt外掛程式升級,若您使用Eclipse adt 22及以上的話,需要對開發環境進行相應的設定,方法如下:
(1)在Eclipse 中選中工程,右鍵選 Properties->Java Build Path->Order and Export 使 Android Private Libraries處於勾選狀態;
(2) Project -> clean
4.
在AndroidManifest.xml中添加開發密鑰、要求的權限等資訊
由於要調用百度地圖的相關資料,因此需要添加相應的許可權,我們可以通過查看下載的百度地圖的樣本檔案,從它的AndroidManifest.xml中進行拷貝即可,或者運行時根據提示資訊一個個進行添加。(1)在application中添加開發密鑰與對螢幕的支援
- <!-- 添加對螢幕的支援 -->
- <supports-screens
- android:largeScreens="true"
- android:normalScreens="true" android:smallScreens="true"
- android:resizeable="true" android:anyDensity="true"/>
- <application>
- <meta-data
- android:name="com.baidu.lbsapi.API_KEY"
- android:value="開發人員申請的 key" />
- </application>
(2)添加要求的權限
- <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" />
二、百度地圖SDK的核心API介紹1.SDKInitializer類 (1)作用:初始化 SDK context 全域變數,指定 sdcard 路徑
(2)靜態成員變數static SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR :網路錯誤廣播 action string static SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR :|key 驗證失敗廣播 action string static SDK_BROADTCAST_INTENT_EXTRA_INFO_KEY_ERROR_CODE :key 驗證失敗廣播 intent 中附加資訊錯誤碼鍵(3)靜態成員方法
static void |
initialize(Context context)初始化全域 context。 |
static void |
initialize(java.lang.String sdcardPath, Context context)初始化全域 context,指定 sdcard 路徑,若採用預設路徑,請使用initialize(Context context) 重載函數 |
2.MapView類(1)作用 一個顯示地圖的視圖(View),它負責從服務端擷取地圖資料。它將會捕捉螢幕觸控手勢事件, 使用這個類必須按照它的生命週期進行操控,你必須參照以下方法onCreate(Bundle)、 onResume()、onPause()、onDestroy()等聲明周期函數。在使用地圖組件之前請確保已經調用了 SDKInitializer.initialize(Context) 函數以提供全域 Context 資訊。(2)構造方法 MapView(Context context) 根據給定的上下文參數構造一個MapView 的新對象(3)常用方法void addView(View child, LayoutParams params) :向MapView中添加一個子View。 BaiduMap getMap() :擷取地圖控制器BaiduMap對象 void onDestroy() :當Activity銷毀時調用地圖的銷毀 void onPause() :當Activity暫停時候調用地圖暫停 void onResume() :當Activity喚醒是調用地圖喚醒 void removeView(View view) :|從MapView中移除一個子View void setScaleControlPosition(Point p): 設定比例尺控制項的位置,在 onMapLoadFinish 後生效 void setZoomControlsPosition(Point p) :設定縮放控制項的位置,在 onMapLoadFinish 後生效 void showScaleControl(boolean show) :設定是否顯示比例尺控制項 void showZoomControls(boolean show): 設定是否顯示縮放控制項參考文檔:http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v3_4_0/
三、百度地圖執行個體
1.在布局xml檔案中添加地圖控制項
- <com.baidu.mapapi.map.MapView
- android:id="@+id/bmapView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:clickable="true" />
2.在應用程式建立時初始化 SDK引用的Context 全域變數 在SDK各功能組件使用之前都需要調用SDKInitializer.initialize(getApplicationContext());該方法要再setContentView方法之前實現。
3.建立地圖Activity,啟動地圖並管理地圖生命週期
- package base.baidu.oncampus;
- import android.app.Activity;
- import android.os.Bundle;
- import com.baidu.mapapi.SDKInitializer;
- import com.baidu.mapapi.map.MapView;
- public class MainActivity extends Activity {
- MapView mapView = null;
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- SDKInitializer.initialize(getApplicationContext()); //在使用SDK各組件之前初始化context資訊,傳入AplicationContext
- setContentView(R.layout.main);
- mapView = (MapView)findViewById(R.id.bmapView); //擷取地圖控制項引用
- }
- @Override
- protected void onDestroy() {
- mapView.onDestroy(); //關閉百度地圖
- super.onDestroy();
- }
- @Override
- protected void onPause() {
- mapView.onPause(); //暫停使用百度地圖
- super.onPause();
- }
- @Override
- protected void onResume() {
- mapView.onResume(); //恢複使用百度地圖
- super.onResume();
- }
- }
運行結果:
參考資料:http://developer.baidu.com/map/index.php?title=androidsdk/guide/buildproject