Android 百度地圖開發之一(Hello BaiDu Map)

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.