android中實現百度地圖

android實現GPS定位

    實現GPS定位功能主要是引入百度地圖的包import com.baidu.mapapi

   
    要引入則需要先下載百度地圖移動版API開發包由於下載過程較爲繁瑣;我這裏將提供現成的壓縮文件

    如果需要,可以自由下載;

    得到API開發包後還要得到密鑰,即Key;爲方便大家學習,這裏也將提供自由的Key;

  
只需將這密鑰複製到後面的代碼上就可以了(22FCFCD052AAAE640F34D608D98CDED68B0744A5)



    嗯,現在我們可以準備創建android項目了;創建好項目後、將APi開發包中的baidumap.jar文件引入
    到項目名下;其步驟是:右鍵項目名,找到Properties,在目錄下找到->java Build Path-接着在

    >Libraries中選擇"Add JARs",找到並選定baidumapapi.jar;這樣就可以使用API了。

   
   
    由於版本不同的原因、有些項目裏面沒有libs文件夾,如果有的話就不用新建了;然後再將
    baidumap.jar文件複製到libs文件中、還要將libBMapApiEngine_v1_3_3.so複製到工程目錄下的libs
    \armeabi。


  在敲入代碼之前、我們需要增加地圖的使用權限;在Mainfest中、增加使用者的權限:

其代碼是:


Java代碼 複製代碼 收藏代碼
  1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >   
  2.     </uses-permission>   
  3.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >   
  4.     </uses-permission>   
  5.     <uses-permission android:name="android.permission.INTERNET" >   
  6.     </uses-permission>   
  7.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >   
  8.     </uses-permission>   
  9.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >   
  10.     </uses-permission>   
  11.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >   
  12.     </uses-permission>   
  13.     <uses-permission android:name="android.permission.READ_PHONE_STATE" >   
  14.     </uses-permission>  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
    </uses-permission>
    <uses-permission android:name="android.permission.INTERNET" >
    </uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" >
    </uses-permission>




有些版本中需要在mainfest中增加android權限、但我的就不需要增加;如果需要;可以試

試下面的代碼;

Java代碼 複製代碼 收藏代碼
  1. <com.baidu.mapapi.MapView   
  2.        android:id="@+id/bmapView"  
  3.        android:layout_width="fill_parent"  
  4.        android:layout_height="fill_parent"  
  5.        android:clickable="true" />  
 <com.baidu.mapapi.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />





接着便是寫主函數Activity的類了,其繼承MapActivity的類、

先聲明需要的對象:

Java代碼 複製代碼 收藏代碼
  1.         BMapManager mBMapMan=null;//地圖管理者     
  2. MapView bMapView;//視圖     
  3. LocationListener locationlistener;//位置動作監聽器     
  4. MyLocationOverlay mLocationOverlay;//地圖覆蓋物   
         BMapManager mBMapMan=null;//地圖管理者  
	MapView bMapView;//視圖  
	LocationListener locationlistener;//位置動作監聽器  
	MyLocationOverlay mLocationOverlay;//地圖覆蓋物 




然後,在主函數中創建百度地圖的主對象;調用使用密鑰參數的方法;接着初始化視圖和找到空間視圖。

Java代碼 複製代碼 收藏代碼
  1. //創建百度地圖管理者   
  2.         mBMapMan=new BMapManager(getApplication());   
  3.         mBMapMan.init("22FCFCD052AAAE640F34D608D98CDED68B0744A5",null);   
  4. //第一個參數就是你申請的key碼   
  5.         super.initMapActivity(mBMapMan);//初始化百度地圖    
  6.         bMapView=(MapView)findViewById(R.id.bmapView);//找到控件視圖  
//創建百度地圖管理者
        mBMapMan=new BMapManager(getApplication());
        mBMapMan.init("22FCFCD052AAAE640F34D608D98CDED68B0744A5",null);
//第一個參數就是你申請的key碼
        super.initMapActivity(mBMapMan);//初始化百度地圖 
        bMapView=(MapView)findViewById(R.id.bmapView);//找到控件視圖



接着設置內置的縮放控件和控件視圖的控制權;

Java代碼 複製代碼 收藏代碼
  1. bMapView.setBuiltInZoomControls(true);//設置啓動內置的縮放控件    
  2.         MapController mMapController =bMapView.getController();//得到bMapView的控制權,  
bMapView.setBuiltInZoomControls(true);//設置啓動內置的縮放控件 
        MapController mMapController =bMapView.getController();//得到bMapView的控制權,



設置一個經緯度、然後將此座標作爲地圖的中心位置;順便還要設置地圖的大小的級別。


Java代碼 複製代碼 收藏代碼
  1. //給定一個經緯度構造一個GeoPoint ,單位是微度(度*1E6)   
  2.         GeoPoint point=new GeoPoint ((int)(39.915*1E6),(int)(116.404*1E6));     
  3.         mMapController.setCenter(point);//設置地圖中心點   
  4.         mMapController.setZoom(12);//設置地圖zoom級別   
  5.         //獲取當前位置的覆蓋物     
  6.         mLocationOverlay=new MyLocationOverlay(this,bMapView);     
  7.         //添加定位覆蓋物     
  8.         bMapView.getOverlays().add(mLocationOverlay);   
//給定一個經緯度構造一個GeoPoint ,單位是微度(度*1E6)
        GeoPoint point=new GeoPoint ((int)(39.915*1E6),(int)(116.404*1E6));  
        mMapController.setCenter(point);//設置地圖中心點
        mMapController.setZoom(12);//設置地圖zoom級別
        //獲取當前位置的覆蓋物  
        mLocationOverlay=new MyLocationOverlay(this,bMapView);  
        //添加定位覆蓋物  
        bMapView.getOverlays().add(mLocationOverlay); 




定義位置監聽器、獲取地圖位置

Java代碼 複製代碼 收藏代碼
  1. //定義位置監聽器     
  2.         locationlistener=new LocationListener() {     
  3.             public void onLocationChanged(Location location) {     
  4.                 //當位置改變時,獲取當前經緯度     
  5.                 if (location != null){     
  6.                    //獲取位置經緯度     
  7.                     GeoPoint pt = new GeoPoint((int)(location.getLatitude()*1e6),     
  8.                            (int)(location.getLongitude()*1e6));     
  9.                     //將視圖中心定位到所在經緯度     
  10.                     bMapView.getController().animateTo(pt);     
  11.                 }     
  12.            }     
  13.                
  14.         };  
//定義位置監聽器  
        locationlistener=new LocationListener() {  
            public void onLocationChanged(Location location) {  
                //當位置改變時,獲取當前經緯度  
                if (location != null){  
                   //獲取位置經緯度  
                    GeoPoint pt = new GeoPoint((int)(location.getLatitude()*1e6),  
                           (int)(location.getLongitude()*1e6));  
                    //將視圖中心定位到所在經緯度  
                    bMapView.getController().animateTo(pt);  
                }  
           }  
            
        };





根據管理者、更新地圖位置

Java代碼 複製代碼 收藏代碼
  1. protected void onResume(){     
  2.             // 獲取位置管理者,視圖根據位置監聽更新位置     
  3.             mBMapMan.getLocationManager().requestLocationUpdates(locationlistener);     
  4.             //打開定位圖標     
  5.            mLocationOverlay.enableMyLocation();     
  6.             // 打開指南針     
  7.             mLocationOverlay.enableCompass();     
  8.             //啓動管理着     
  9.             mBMapMan.start();     
  10.             super.onResume();     
  11.    }  
 protected void onResume(){  
    	        // 獲取位置管理者,視圖根據位置監聽更新位置  
    	        mBMapMan.getLocationManager().requestLocationUpdates(locationlistener);  
    	        //打開定位圖標  
    	       mLocationOverlay.enableMyLocation();  
    	        // 打開指南針  
    	        mLocationOverlay.enableCompass();  
    	        //啓動管理着  
    	        mBMapMan.start();  
    	        super.onResume();  
    }



這樣、android百度地圖就可以在手機上實現了。。。如果還有報錯話、那就是主函數中要求添加一個判斷方法;此方法不需要重寫;其作用目前還不清楚。。。

由於文件上傳有問題,所以這裏提供下載的地址;
http://dev.baidu.com/wiki/imap/index.php?title=Android%E5%B9%B3%E5%8F%B0/%E7%9B%B8%E5%85%B3%E4%B8%8B%E8%BD%BD


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