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

来源:互联网 发布:linux运行windows程序 编辑:程序博客网 时间:2024/05/17 04:33

 本篇通过一个简单的示例一步步介绍如何在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)
      

[xhtml] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns: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.MapView android: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
     

[java] view plaincopy
  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. public class MainActivity extends MapActivity {  
  13.     private BMapManager mapManager;  
  14.     private MapView mapView;  
  15.     private MapController mapController;  
  16.   
  17.     @Override  
  18.     public void 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(00, 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.     protected boolean isRouteDisplayed() {  
  52.         return false;  
  53.     }  
  54.   
  55.     @Override  
  56.     protected void onDestroy() {  
  57.         if (mapManager != null) {  
  58.             mapManager.destroy();  
  59.             mapManager = null;  
  60.         }  
  61.         super.onDestroy();  
  62.     }  
  63.   
  64.     @Override  
  65.     protected void onPause() {  
  66.         if (mapManager != null) {  
  67.             mapManager.stop();  
  68.         }  
  69.         super.onPause();  
  70.     }  
  71.   
  72.     @Override  
  73.     protected void onResume() {  
  74.         if (mapManager != null) {  
  75.             mapManager.start();  
  76.         }  
  77.         super.onResume();  
  78.     }  
  79. }  

6)在AndroidManifest.xml中配置
     

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

7)运行结果
      
说明:上面的应用只是简单的展示了百度地图(交通地图),并将一个指定的点(根据经纬度确定)展示在手机屏幕的中心。当然,实际项目中涉及的map应用不会这么简单,百度地图API为我们提供了丰富的功能接口,有待我们一起去研究学习。


原文地址:http://blog.csdn.net/lyq8479/article/details/6384428

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 两套房改房违规怎么办 法院保全的物品在我家怎么办 西瓜视频答题结束了钱没提现怎么办 诚信答题密码忘了怎么办 我未成年杀了人怎么办 错过了网课考试怎么办? 2018广东省普法考试0分怎么办 小孩错过了小升初的考试怎么办 错过了自主招生考试怎么办? 科目一考试错过了时间怎么办 中学生网瘾怎么办济南远大认真 u盘安装不了系统怎么办 对敏感脆弱的青春期孩子怎么办? 脸变得很交黑怎么办 玩手机长痘痘了怎么办 青少年左侧后背突发疼痛怎么办 纵欲过度导致青少年白发怎么办 20岁了不想长大怎么办 网吧老板跑路了怎么办 网吧玩地下城卡怎么办 个人公积金封存之前厂子欠费怎么办 学生欠了2万块怎么办 玉米去完库存量cool怎么办 幸福蓝海电子券过期怎么办 幸福蓝海国际影城会员怎么办 幸福蓝海会员卡过期了怎么办 电机线圈处于平衡位置怎么办 混联电路求电功率最小怎么办 电脑超出工作频率范围怎么办 手机红外线感应器坏了怎么办 我的世界左右慢怎么办 发电机自动启停装置故障怎么办 如果自动启停没关发动机涉水怎么办 偏激的人不分手怎么办 被极端的人纠缠怎么办 对固执偏激的人怎么办 车子右前轮偏磨怎么办? 轮胎边缘磨黑了怎么办 36周胎儿绕颈一周怎么办 孕中期胎儿偏小怎么办 怀孕34周偏小2周怎么办