如何在Android应用中使用百度地图api

1)下载百度地图移动版API(Android)开发包       要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个开发包包含两个文件:baidumapapi.jar和libBMapApiEngine.so。下载地址:http://dev.baidu.com/wiki/static/imap/files/BaiduMapApi_Lib_Android_1.0.zip

2)申请API Key       和使用Google map api一样,在使用百度地图API之前也需要获取相应的API Key。百度地图API Key与你的百度账户相关联,因此您必须先有百度帐户,才能获得API Key;并且,该Key与您引用API的程序名称有关。       百度API Key的申请要比Google的简单多了,其实只要你有百度帐号,应该不超过30秒就能完成API Key的申请。申请地址:http://dev.baidu.com/wiki/static/imap/key/

3)创建一个Android工程       这里需要强调一点:百度地图移动版api支持Android 1.5及以上系统,因此我们创建的工程应基于Android SDK 1.5及以上。       工程创建完成后,将baidumapapi.jar和libBMapApiEngine.so分别拷贝到工程的根目录及libs/armeabi目录下,并在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定baidumapapi.jar,这样就可以在应用中使用百度地图API了。工程完整的目录结构如下图所示:      

4)在布局文件中添加地图控件(res/layout/main.xml)      

  1. <?xmlversion="1.0"encoding="utf-8"?> 
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     > 
  7.     <com.baidu.mapapi.MapViewandroid:id="@+id/map_View" 
  8.         android:layout_width="fill_parent" 
  9.         android:layout_height="fill_parent" 
  10.         android:clickable="true" 
  11.     /> 
  12. </LinearLayout> 

  

 

5)创建Activity继承com.baidu.mapapi.MapActivity      

  1. package com.liufeng.baidumap; 
  2.  
  3. import android.graphics.drawable.Drawable; 
  4. import android.os.Bundle; 
  5.  
  6. import com.baidu.mapapi.BMapManager; 
  7. import com.baidu.mapapi.GeoPoint; 
  8. import com.baidu.mapapi.MapActivity; 
  9. import com.baidu.mapapi.MapController; 
  10. import com.baidu.mapapi.MapView; 
  11.  
  12. publicclass MainActivity extends MapActivity { 
  13.     private BMapManager mapManager; 
  14.     private MapView mapView; 
  15.     private MapController mapController; 
  16.  
  17.     @Override 
  18.     publicvoid onCreate(Bundle savedInstanceState) { 
  19.         super.onCreate(savedInstanceState); 
  20.         setContentView(R.layout.main); 
  21.  
  22.         // 初始化MapActivity 
  23.         mapManager = new BMapManager(getApplication()); 
  24.         // init方法的第一个参数需填入申请的API Key 
  25.         mapManager.init("285B415EBAB2A92293E85502150ADA7F03C777C4", null); 
  26.         super.initMapActivity(mapManager); 
  27.  
  28.         mapView = (MapView) findViewById(R.id.map_View); 
  29.         // 设置地图模式为交通地图 
  30.         mapView.setTraffic(true); 
  31.         // 设置启用内置的缩放控件 
  32.         mapView.setBuiltInZoomControls(true); 
  33.  
  34.         // 用给定的经纬度构造一个GeoPoint(纬度,经度) 
  35.         GeoPoint point = new GeoPoint((int) (47.118440 * 1E6), (int) (87.493147 * 1E6)); 
  36.  
  37.         // 创建标记maker 
  38.         Drawable marker = this.getResources().getDrawable(R.drawable.iconmarka); 
  39.         // 为maker定义位置和边界 
  40.         marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight()); 
  41.  
  42.         // 取得地图控制器对象,用于控制MapView 
  43.         mapController = mapView.getController(); 
  44.         // 设置地图的中心 
  45.         mapController.setCenter(point); 
  46.         // 设置地图默认的缩放级别 
  47.         mapController.setZoom(12); 
  48.     } 
  49.  
  50.     @Override 
  51.     protectedboolean isRouteDisplayed() { 
  52.         returnfalse
  53.     } 
  54.  
  55.     @Override 
  56.     protectedvoid onDestroy() { 
  57.         if (mapManager != null) { 
  58.             mapManager.destroy(); 
  59.             mapManager = null
  60.         } 
  61.         super.onDestroy(); 
  62.     } 
  63.  
  64.     @Override 
  65.     protectedvoid onPause() { 
  66.         if (mapManager != null) { 
  67.             mapManager.stop(); 
  68.         } 
  69.         super.onPause(); 
  70.     } 
  71.  
  72.     @Override 
  73.     protectedvoid onResume() { 
  74.         if (mapManager != null) { 
  75.             mapManager.start(); 
  76.         } 
  77.         super.onResume(); 
  78.     } 

 

6)在AndroidManifest.xml中配置      

  1. <?xmlversion="1.0"encoding="utf-8"?> 
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android" 
  3.       package="com.liufeng.baidumap" 
  4.       android:versionCode="1" 
  5.       android:versionName="1.0"> 
  6.     <applicationandroid:icon="@drawable/icon"android:label="@string/app_name"> 
  7.         <activityandroid:name=".MainActivity"android:label="@string/app_name"> 
  8.             <intent-filter> 
  9.                 <actionandroid:name="android.intent.action.MAIN"/> 
  10.                 <categoryandroid:name="android.intent.category.LAUNCHER"/> 
  11.             </intent-filter> 
  12.         </activity> 
  13.     </application> 
  14.  
  15.     <uses-sdkandroid:minSdkVersion="4"/> 
  16.     <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/> 
  17.     <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/> 
  18.     <uses-permissionandroid:name="android.permission.INTERNET"/> 
  19.     <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
  20.     <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/> 
  21.     <uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/> 
  22.     <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/> 
  23. </manifest>  

 

7)运行结果      

posted @ 2013-05-29 11:37  feiyue528  阅读(223)  评论(0编辑  收藏  举报