百度地圖+安卓SDK開發學習之百度地圖初始化

        由於畢業設計是使用安卓開發,所以不得不開始學習安卓,另外由於用到路徑搜索等功能,不得不使用地圖的功能,但是google地圖常常被和諧,而現在百度地圖API也開放着,並且百度地圖更適合本土程序的開發,雖然精確的米數還沒到很精確(據說北斗正嘗試着精確到8米以內)。今天在這裏記下百度地圖開發的一些過程,一來與大家分享,因爲網上現在關於百度地圖API開發的資源還是比較少的。二來是記錄下自己的學習過程,以防以後忘了,還能複習複習。

       我的開發環境:eclipse(ADT v22.2.1)+BaiduMap_AndroidSDK_v2.3.0

       1.註冊百度賬號,最好是英文的,防止中文無法解析的情況,註冊地址:https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F 

        2.下載百度地圖AndroidSDK,如果應用程序需要有定位功能,還要下載定位的SDK,下載地址:http://developer.baidu.com/map/sdkandev-download.htm    下載完成後直接解壓即可

        3.申請密鑰,點擊申請密鑰後,點擊創建應用,添加你的新的密鑰,每個密鑰對應一個應用程序,這個密鑰是跨平臺的。

          需要注意的幾點是:

         A.應用名稱:需要使用百度地圖API的應用名稱

         B.應用類型:Android開發選擇for mobile

         C.安全碼:組成(數字簽名;報名) 

         獲取數字簽名的方法:

        1.打開eclipse,點擊windows---preferences--android--build,打開後其中的SHA1即是你的數字簽名

        2.打開cmd,進入你的安卓adt目錄下的android文件夾下,敲入命令:

           keytool -list -v -keystore keystorefile-storepass android

           默認密碼是android,回車後可以看到顯示了SHA1的值,即是你的數字簽名

          獲得數字簽名後加上你的包名,記得中間用分號隔開,填入你創建密鑰的對話框中即可。此時你的key已經配置完成。

      

      4.寫出自己第一個百度地圖的hello world例子

         第一步:首先去百度地圖API官網的密鑰管理中去設置與你的應用對應的密鑰,因爲百度地圖API要求每個應用程序對應一個密鑰。

         第二步:將baidumapapiv2.30.jar放入你的應用程序的libs文件夾下,將libBaiduMapSDK_v2_3_0.so放入libs中的armeabi文件夾中。

         第三步:建立自己的MyMapActivity類,添加如下代碼:

import android.app.Activity; 

import android.content.Intent;

importandroid.content.res.Configuration; 

import android.graphics.Bitmap;

import android.os.Bundle; 

import android.view.Menu; 

import android.widget.FrameLayout; 

import android.widget.Toast; 

import com.baidu.mapapi.BMapManager; 

import com.baidu.mapapi.map.MKMapViewListener; 

importcom.baidu.mapapi.map.MapController; 

import com.baidu.mapapi.map.MapPoi; 

import com.baidu.mapapi.map.MapView; 

importcom.baidu.platform.comapi.basestruct.GeoPoint; 

  

public class MyMapActivity extendsActivity{ 

      

       BMapManagermBMapMan = null; 

       MapViewmMapView = null; 

       privatestatic String strkey="B4081aa55f954e29df90febb326cb5f5";

       @Override 

       public void onCreate(Bundle savedInstanceState){ 

              super.onCreate(savedInstanceState); 

               mBMapMan=newBMapManager(getApplication()); 

              mBMapMan.init(strkey,null);   

              //注意:請在使用setContentView前初始化BMapManager對象,否則會報錯 

              setContentView(R.layout.activity_main); 

              mMapView=(MapView)findViewById(R.id.bmapView); 

              mMapView.setBuiltInZoomControls(true); 

              //設置啓用內置的縮放控件 

              MapControllermMapController=mMapView.getController(); 

              // 得到mMapView的控制權,可以用它控制和驅動平移和縮放 

              GeoPoint point =newGeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6)); 

              //用給定的經緯度構造一個GeoPoint,單位是微度 (度 * 1E6) 

              mMapController.setCenter(point);//設置地圖中心點 

              mMapController.setZoom(12);//設置地圖zoom級別 

       } 

       

       @Override 

       protected void onDestroy(){ 

               mMapView.destroy(); 

                if(mBMapMan!=null){ 

                       mBMapMan.destroy(); 

                        mBMapMan=null; 

                } 

                super.onDestroy(); 

       } 

       @Override 

       protected void onPause(){ 

                mMapView.onPause(); 

                if(mBMapMan!=null){ 

                       mBMapMan.stop(); 

                } 

                super.onPause(); 

       } 

       @Override 

       protected void onResume(){ 

                mMapView.onResume(); 

                if(mBMapMan!=null){ 

                        mBMapMan.start(); 

                } 

               super.onResume(); 

       } 

}  

第四步:給你的工程的AndroidManifest.xml文件中添加如下代碼:

具體需要使用哪些權限自己選擇。

 <!--使用網絡功能所需權限  --> 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"> 

</uses-permission> 

<uses-permission android:name="android.permission.INTERNET"> 

</uses-permission> 

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"> 

</uses-permission> 

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"> 

</uses-permission> 

<!-- SDK離線地圖和cache功能需要讀寫外部存儲器 --> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"> 

</uses-permission> 

<!-- 獲取設置信息和詳情頁直接撥打電話需要以下權限  --> 

<uses-permission android:name="android.permission.READ_PHONE_STATE"> 

</uses-permission> 

<uses-permission android:name="android.permission.CALL_PHONE"> 

</uses-permission> 

 

下面這個權限必須有,否則mapManager初始化失敗

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

 

接着在<application>中添加如下代碼,這點非常重要,否則mapManager初始化失敗

 <service android:name="com.baidu.location.f" android:enabled="true"android:process=":remote"> </service>

 

第五步:在activity_main.xml文件中添加mapView控件,具體如下:

<com.baidu.mapapi.map.MapView android:id="@+id/bmapView"

    android:layout_width="fill_parent"android:layout_height="fill_parent"

    android:clickable="true"     />

 

第六步:運行你的應用程序。

        


        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章