如何在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> 

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <com.baidu.mapapi.MapView android:id="@+id/map_View" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> </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.     } 

package com.liufeng.baidumap; import android.graphics.drawable.Drawable; import android.os.Bundle; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.GeoPoint; import com.baidu.mapapi.MapActivity; import com.baidu.mapapi.MapController; import com.baidu.mapapi.MapView; public class MainActivity extends MapActivity { private BMapManager mapManager; private MapView mapView; private MapController mapController; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 初始化MapActivity mapManager = new BMapManager(getApplication()); // init方法的第一个参数需填入申请的API Key mapManager.init("285B415EBAB2A92293E85502150ADA7F03C777C4", null); super.initMapActivity(mapManager); mapView = (MapView) findViewById(R.id.map_View); // 设置地图模式为交通地图 mapView.setTraffic(true); // 设置启用内置的缩放控件 mapView.setBuiltInZoomControls(true); // 用给定的经纬度构造一个GeoPoint(纬度,经度) GeoPoint point = new GeoPoint((int) (47.118440 * 1E6), (int) (87.493147 * 1E6)); // 创建标记maker Drawable marker = this.getResources().getDrawable(R.drawable.iconmarka); // 为maker定义位置和边界 marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight()); // 取得地图控制器对象,用于控制MapView mapController = mapView.getController(); // 设置地图的中心 mapController.setCenter(point); // 设置地图默认的缩放级别 mapController.setZoom(12); } @Override protected boolean isRouteDisplayed() { return false; } @Override protected void onDestroy() { if (mapManager != null) { mapManager.destroy(); mapManager = null; } super.onDestroy(); } @Override protected void onPause() { if (mapManager != null) { mapManager.stop(); } super.onPause(); } @Override protected void onResume() { if (mapManager != null) { mapManager.start(); } super.onResume(); } }

 

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>  

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.liufeng.baidumap" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="4" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> </manifest>

 

7)运行结果      

转载于:https://www.cnblogs.com/feiyue528/archive/2013/05/29/3105653.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值