百度地图:建立百度地图开发环境)

来源:互联网 发布:mysql实时同步工具 编辑:程序博客网 时间:2024/06/11 20:54

今天开始写安卓的博客啦,这次给大家带来的是安卓版本的百度地图的开发

在正式开始之前先请大家注意在转载博客的时候注意说明出处 


在做百度地图开发的时候第一步肯定是要搭建好安卓的开发环境,由于面向的并不是刚入门,或者说是还没有入门的初级开发者,所以这里的环境搭建我就不跟大家细说了

安卓环境搭建请移步-->百度文库


下面就正式开始写在安卓上面如何利用百度地图开发应用

第一步:下载百度的官方文档-->移步百度API文档下载这次教程使用的版本为《Android SDKv1.3.5(栅格地图版)全部文档下载》

第二步:到百度的官方网站申请百度不用于商业用途的KEY-->移步申请KEY

第三步:等我们的KEY和文档都下载好了以后就可以正式开始编写我们的代码了(建立如下的项目)


第四步:在上图项目中的资源定义文件中(AndroidManifest.xml)加入如下代码

[java] view plaincopyprint?
  1. <!-- 添加百度API的授权信息 -->  
  2.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>  
  3.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>  
  4.     <uses-permission android:name="android.permission.INTERNET"></uses-permission>  
  5.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>  
  6.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>    
  7.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>   
  8.     <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>  
  9.     <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>  

第五步:添加百度地图对屏幕的支持同样是在资源定义文件中

[java] view plaincopyprint?
  1. <!-- 添加百度地图对屏幕的支持 -->  
  2.      <supports-screens android:largeScreens="true"  
  3.         android:normalScreens="false" android:smallScreens="true"  
  4.         android:resizeable="true" android:anyDensity="true"/>  

资源:资源定义文件全部内容如下

[java] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.shuaiyin.baidu"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk android:minSdkVersion="10" />  
  8.   
  9.     <application  
  10.         android:icon="@drawable/ic_launcher"  
  11.         android:label="@string/app_name" >  
  12.         <activity  
  13.             android:label="@string/app_name"  
  14.             android:name=".BaiDu_SuYiActivity" >  
  15.             <intent-filter >  
  16.                 <action android:name="android.intent.action.MAIN" />  
  17.   
  18.                 <category android:name="android.intent.category.LAUNCHER" />  
  19.             </intent-filter>  
  20.         </activity>  
  21.     </application>  
  22.     <!-- 添加百度API的授权信息 -->  
  23.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>  
  24.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>  
  25.     <uses-permission android:name="android.permission.INTERNET"></uses-permission>  
  26.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>  
  27.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>    
  28.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>   
  29.     <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>  
  30.     <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>  
  31.       
  32.      <!-- 添加百度地图对屏幕的支持 -->  
  33.      <supports-screens android:largeScreens="true"  
  34.         android:normalScreens="false" android:smallScreens="true"  
  35.         android:resizeable="true" android:anyDensity="true"/>  
  36. </manifest>  

第六部:把百度地图的JAR包全部导入到项目当中

在百度官方给出的示例文档《BaiduMapApi_Sample_Android_1.3.5》中复制如下图给出的文件注意要在Jar包上点击右键Build Path --> Add to Build Path



第七步:在main.xml中定义显示百度地图控件的MAP

[java] view plaincopyprint?
  1. <!-- 添加显示百度地图的控件 -->  
  2.      <com.baidu.mapapi.MapView   
  3.         android:id="@+id/bmapView"  
  4.         android:layout_width="fill_parent"   
  5.         android:layout_height="fill_parent"   
  6.         android:clickable="true"/>  

    资源:main.xml中全部的代码

[java] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <!-- 添加显示百度地图的控件 -->  
  8.      <com.baidu.mapapi.MapView   
  9.         android:id="@+id/bmapView"  
  10.         android:layout_width="fill_parent"   
  11.         android:layout_height="fill_parent"   
  12.         android:clickable="true"/>  
  13.   
  14. </LinearLayout>  

第八步:这样环境就基本搭建好了,下面就开始写代码了主要在BaiDu_SuYiActivity.java中间完成

1.让  BaiDu_SuYiActivity  继承百度地图提供的   MapActivity  (com.baidu.mapapi.MapActivity)

2.添加对百度地图相关控件的定义

[java] view plaincopyprint?
  1. <SPAN style="WHITE-SPACE: pre"> </SPAN>//添加百度地图的相关控件  
  2. <SPAN style="WHITE-SPACE: pre"> </SPAN>private MapView mapView;  
  3. <SPAN style="WHITE-SPACE: pre"> </SPAN>//加载百度地图的引起  
  4. <SPAN style="WHITE-SPACE: pre"> </SPAN>private BMapManager bMapManager;  
  5. <SPAN style="WHITE-SPACE: pre"> </SPAN>//定义百度地图的KEY  
  6. <SPAN style="WHITE-SPACE: pre"> </SPAN>private String key = "*我对KEY做了处理*729DD94B0429A4BEE30797E04D91B0211C4";  
  7. <SPAN style="WHITE-SPACE: pre"> </SPAN>//在百度地图上添加相应的控件  
  8. <SPAN style="WHITE-SPACE: pre"> </SPAN>private MapController mapController;  
3.在继承MapActivity时要实现他下面的一个方法

[java] view plaincopyprint?
  1. <SPAN style="WHITE-SPACE: pre"> </SPAN>@Override  
  2.     protected boolean isRouteDisplayed() {  
  3.         return false;  
  4.     }  
4.在onCreate方法中写入如下代码

[java] view plaincopyprint?
  1. <SPAN style="WHITE-SPACE: pre"> </SPAN>//首先实例化mapView  
  2.         mapView = (MapView) this.findViewById(R.id.bmapView);  
  3.         bMapManager = new BMapManager(BaiDu_SuYiActivity.this);  
  4.         //调用百度地图加载KEY   
  5.         bMapManager.init(key, new MKGeneralListener() {  
  6.               
  7.             @Override  
  8.             public void onGetPermissionState(int arg0) {  
  9.                 if(arg0 == 300){  
  10.                     Toast.makeText(BaiDu_SuYiActivity.this"您输入的KEY有问题,请核实"2).show();  
  11.                 }  
  12.             }  
  13.               
  14.             @Override  
  15.             public void onGetNetworkState(int arg0) {  
  16.                   
  17.             }  
  18.         });  
  19.           
  20.         this.initMapActivity(bMapManager);  
  21.         //表示可以设置缩放功能   
  22.         mapView.setBuiltInZoomControls(true);  
  23.         mapController = mapView.getController();  
  24.         //在百度地图上标注一个中心点   
  25.         GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));  
  26.         //给地图对象设置一个中心点   
  27.         mapController.setCenter(geoPoint);  
  28.         //设置地图的缩放级别   
  29.         mapController.setZoom(12);  

5.最后实现

onDestroy()-->onResume()-->onPause()方法

[java] view plaincopyprint?
  1. @Override  
  2.     protected void onDestroy() {  
  3.         super.onDestroy();  
  4.         if(bMapManager != null){  
  5.             bMapManager.destroy();  
  6.             bMapManager = null;  
  7.         }  
  8.     }  
  9.     @Override  
  10.     protected void onResume() {  
  11.         super.onResume();  
  12.         if(bMapManager != null){  
  13.             bMapManager.start();  
  14.         }  
  15.     }  
  16.     @Override  
  17.     protected void onPause() {  
  18.         super.onPause();  
  19.         if(bMapManager != null){  
  20.             bMapManager.stop();  
  21.         }  
  22.     }  

[java] view plaincopyprint?
  1. <SPAN style="WHITE-SPACE: pre"></SPAN>  
     资源:BaiDu_SuYiActivity全部代码
[java] view plaincopyprint?
  1. package com.shuaiyin.baidu;  
  2.   
  3. import android.os.Bundle;  
  4. import android.widget.Toast;  
  5.   
  6. import com.baidu.mapapi.BMapManager;  
  7. import com.baidu.mapapi.GeoPoint;  
  8. import com.baidu.mapapi.MKGeneralListener;  
  9. import com.baidu.mapapi.MapActivity;  
  10. import com.baidu.mapapi.MapController;  
  11. import com.baidu.mapapi.MapView;  
  12. /** 
  13.  * 让百度地图继承MapActivity 
  14.  * @author shuaiyin 
  15.  * 
  16.  */  
  17. public class BaiDu_SuYiActivity extends MapActivity {  
  18.       
  19.     //添加百度地图的相关控件   
  20.     private MapView mapView;  
  21.     //加载百度地图的引起   
  22.     private BMapManager bMapManager;  
  23.     //定义百度地图的KEY   
  24.     private String key = "<SPAN style="FONT-FAMILY: Arial, Helvetica, sans-serif">*我对KEY做了处理*729DD94B0429A4BEE30797E04D91B0211C4</SPAN><SPAN style="FONT-FAMILY: Arial, Helvetica, sans-serif">";</SPAN>  
  25.     //在百度地图上添加相应的控件   
  26.     private MapController mapController;  
  27.       
  28.     @Override  
  29.     public void onCreate(Bundle savedInstanceState) {  
  30.         super.onCreate(savedInstanceState);  
  31.         setContentView(R.layout.main);  
  32.           
  33.         //首先实例化mapView   
  34.         mapView = (MapView) this.findViewById(R.id.bmapView);  
  35.         bMapManager = new BMapManager(BaiDu_SuYiActivity.this);  
  36.         //调用百度地图加载KEY   
  37.         bMapManager.init(key, new MKGeneralListener() {  
  38.               
  39.             @Override  
  40.             public void onGetPermissionState(int arg0) {  
  41.                 if(arg0 == 300){  
  42.                     Toast.makeText(BaiDu_SuYiActivity.this"您输入的KEY有问题,请核实"2).show();  
  43.                 }  
  44.             }  
  45.               
  46.             @Override  
  47.             public void onGetNetworkState(int arg0) {  
  48.                   
  49.             }  
  50.         });  
  51.           
  52.         this.initMapActivity(bMapManager);  
  53.         //表示可以设置缩放功能   
  54.         mapView.setBuiltInZoomControls(true);  
  55.         mapController = mapView.getController();  
  56.         //在百度地图上标注一个中心点   
  57.         GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));  
  58.         //给地图对象设置一个中心点   
  59.         mapController.setCenter(geoPoint);  
  60.         //设置地图的缩放级别   
  61.         mapController.setZoom(12);  
  62.           
  63.     }  
  64.       
  65.     @Override  
  66.     protected void onDestroy() {  
  67.         super.onDestroy();  
  68.         if(bMapManager != null){  
  69.             bMapManager.destroy();  
  70.             bMapManager = null;  
  71.         }  
  72.     }  
  73.     @Override  
  74.     protected void onResume() {  
  75.         super.onResume();  
  76.         if(bMapManager != null){  
  77.             bMapManager.start();  
  78.         }  
  79.     }  
  80.     @Override  
  81.     protected void onPause() {  
  82.         super.onPause();  
  83.         if(bMapManager != null){  
  84.             bMapManager.stop();  
  85.         }  
  86.     }  
  87.       
  88.     @Override  
  89.     protected boolean isRouteDisplayed() {  
  90.         return false;  
  91.     }  
  92. }  


模拟器中运行的结果



最后,这样就完成了,是不是用百度地图开发APP是一件很简单的事情呢!只要肯努力就没有什么搞不定的。跟我一起走向移动开发把。


有什么不懂的可以直接给我留言或者私信我。

原创粉丝点击