標籤:android des style blog http color java 使用
之前也接觸過百度地圖的開發,但那是在網上找的案例或代碼,而且是比較老的版本。打算重新學習一下百度地圖的開發。
本次使用的百度地圖的版本是
Android SDK v3.0.0
本篇文章主要講述百度地圖開發的準備和地圖的成功顯示即可。
首先建議大家先申請註冊一個百度帳號。
申請密鑰(要想實現百度地圖的相關服務必須申請密鑰),網址:http://lbsyun.baidu.com/apiconsole/key
需要注意的是:應用程式名稱不要重複或無效,安全碼的輸入詳情請查看:http://developer.baidu.com/map/sdkandev-14.htm
當應用建立成功後,會返回一個密鑰(ak即密鑰):
ok,此時,開發準備工作已基本完成。(下載SDK就不說了吧,選擇自己需要的功能即可。網址:http://developer.baidu.com/map/sdkandev-download.htm)
接下來就是實現地圖在手機上最基本的顯示了。
工程配置
第一步:在工程裡建立libs檔案夾,將開發包裡的BaiduLBS_Android.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
(需要注意的是:如果你在運行時報錯為:Unable to execute dex: Multiple dex files define Lcom/baidu/mapapi/xxxx 或者為 Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/baidu/mapapi/xxxxx 則請不要執行以上配置。因為在匯入外部檔案時重複勾選了,取消勾選再clean即可)
顯示百度地圖
接下來就開始涉及代碼了。
百度地圖SDK為開發人員提供了便捷的顯示百度地圖資料的介面,通過以下幾步操作,即可在您的應用中使用百度地圖資料:
第一步:建立並配置工程(具體方法參見工程配置部分的介紹);
第二步:在AndroidManifest中添加開發密鑰、要求的權限等資訊;
(1)在application中添加開發密鑰
<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" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
(3)在布局xml檔案中添加地圖控制項
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" />
(4)在應用程式建立時初始化 SDK引用的Context 全域變數:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各組件之前初始化context資訊,傳入ApplicationContext //注意該方法要再setContentView方法之前實現 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); } }
注意:在SDK各功能組件使用之前都需要調用
SDKInitializer.initialize(getApplicationContext());,因此我們建議該方法放在Application的初始化方法中
(5)建立地圖Activity,管理地圖生命週期
public class MainActivity extends Activity { MapView mMapView = null; @Override protected 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); } @Override protected void onDestroy() { super.onDestroy(); //在activity執行onDestroy時執行mMapView.onDestroy(),實現地圖生命週期管理 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity執行onResume時執行mMapView. onResume (),實現地圖生命週期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity執行onPause時執行mMapView. onPause (),實現地圖生命週期管理 mMapView.onPause(); } }
完成以上步驟後,運行程式,即可在您的應用中顯示如下地圖:
本篇文章幾乎和百度上的第一個案例(Hello BaiduMap)相同,只加了LZ的個人經驗的簡單說明。
Demo下載:http://download.csdn.net/detail/af74776/7714789