如何用Android开发工具引用百度地图

来源:互联网 发布:乳源县网络问政 编辑:程序博客网 时间:2024/06/03 19:24

1.首先开发者在百度地图Android SDK 的下载页面下载到最新的地图SDK 

http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download

2. 申请密钥

在使用百度地图SDK为您提供的各种LBS能力之前,您需要获取百度地图移动版的开发密钥,该密钥与您的百度账户相关联。因此,您必须先有百度帐户,才能获得开发密钥。并且,该密钥与您创建的过程名称有关,具体流程请参考如下介绍。

Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key

申请的步骤:

(1)首先注册百度账号进入百度登录页面,输入账号登录

(2)进入百度页面后  点击右上角的API控制台


点击创建应用


应用类型选择 Android SDK ,然后填写数字签名和报名 即可。数字签名从哪里找到

获取安全码

安全码的组成规则为:Android签名证书的sha1值+packagename例如:


SHA1:BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75


包名:com.baidumap.demo


Android应用获取包名packagename,根据开发工具不同,获取位置有所不同

1、使用 eclipse 开发

包名是Android应用程序本身在AndroidManifest.xml 中定义的名称,例如:

and_key12.png

2、使用 Android studio 开发

包名需要在文件build.gradle中查询 applictionId,例如:

pagename.png


Android签名证书的sha1值获取方式有两种:

第一种方法:使用keytool

第1步:运行进入控制台

and_key6.png and_key7.png

第2步:定位到.android文件夹下,输入cd .android

and_key8.png

第3步:输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android),例如:

其中keytool为jdk自带工具;keystorefile为Android 签名证书文件

and_key9.png

and_key10.png

第二种方法:在eclipse中,在adt 22中直接查看

如果使用adt 22,可以在eclipse中直接查看:windows -> preferance -> android -> build。 如下图示:

and_key11.png

其中“SHA1 fingerprint”值即为Android签名证书的sha1值

成功创建KEY

在输入安全码后,点击“确定”完成应用的配置工作,您将会得到一个创建的Key,请妥善保管您所申请的Key。到这您就可以使用新Key来完成您的开发工作了。

3.创建Android工程、导入百度地图开发包;

4.在AndroidManifest.xml中添加各种权限;

       代码如下:

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.baidumap.basemap"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk  
  8.         android:minSdkVersion="8"  
  9.         android:targetSdkVersion="8" />  
  10.       
  11.     <supports-screens android:largeScreens="true"  
  12.         android:normalScreens="true"  
  13.         android:smallScreens="true"  
  14.         android:resizeable="true"  
  15.         android:anyDensity="true"/>  
  16.     <!-- 添加屏幕支持 -->  
  17.   
  18.     <application  
  19.         android:allowBackup="true"  
  20.         android:icon="@drawable/ic_launcher"  
  21.         android:label="@string/app_name"  
  22.         android:theme="@style/AppTheme" >  
  23.         <activity  
  24.             android:name="com.baidumap.basemap.MainActivity"  
  25.             android:label="@string/app_name"   
  26.             android:screenOrientation="sensor"  
  27.             android:configChanges="orientation|keyboardHidden">  
  28.             <!-- 注意添加转屏的相关设置 -->  
  29.               
  30.             <intent-filter>  
  31.                 <action android:name="android.intent.action.MAIN" />  
  32.   
  33.                 <category android:name="android.intent.category.LAUNCHER" />  
  34.             </intent-filter>  
  35.         </activity>  
  36.     </application>  
  37.       
  38.     <!--使用网络功能所需权限  -->  
  39.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>  
  40.     <uses-permission android:name="android.permission.INTERNET"></uses-permission>  
  41.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  
  42.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  
  43.     <!-- SDK离线地图和cache功能需要读写外部存储器 -->    
  44.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>  
  45.     <!-- 获取设置信息和详情页直接拨打电话需要以下权限  -->    
  46.     <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>    
  47.     <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>  
  48.   
  49. </manifest>  

      5:在布局文件中添加百度地图控件(mapview);

       代码如下:

[html] view plain copy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".MainActivity" >  
  6.   
  7.     <!-- 放入百度地图的mapview -->  
  8.     <com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="fill_parent"  
  11.         android:clickable="true"/>  
  12.   
  13. </RelativeLayout>  

6.在主类中定义mapview对象和地图管理对象,在oncreate方法里需要首先初始化地图管理对象,然后初始化mapview对象,并且设置mapview的相应状态;

       代码如下:

[java] view plain copy
  1. import com.baidu.mapapi.BMapManager;  
  2. import com.baidu.mapapi.map.MapController;  
  3. import com.baidu.mapapi.map.MapView;  
  4. import com.baidu.platform.comapi.basestruct.GeoPoint;  
  5.   
  6. import android.os.Bundle;  
  7. import android.app.Activity;  
  8.   
  9.   
  10. public class MainActivity extends Activity {  
  11.   
  12.     BMapManager bMapManager = null;  // 定义管理sdk的对象  
  13.     MapView mapView = null;  // 定义mapview对象  
  14.       
  15.     @Override  
  16.     protected void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.           
  19.         // 初始化管理对象,注意要在setContentView(R.layout.activity_main)之前初始化,否则会报错  
  20.         bMapManager = new BMapManager(getApplication());  
  21.         bMapManager.init("输入您申请的key"null);  
  22.           
  23.         setContentView(R.layout.activity_main);  
  24.           
  25.         // 初始化mapview对象,并且设置显示缩放控件  
  26.         mapView = (MapView) findViewById(R.id.bmapsView);  
  27.         mapView.setBuiltInZoomControls(true);  
  28.           
  29.         // 定义地图控件,获取mapview的控制,并把地图范围定位北京市  
  30.         MapController mapController = mapView.getController();  
  31.         GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));  
  32.         mapController.setCenter(point);  
  33.         mapController.setZoom(12);  
  34.           
  35.     }  
  36.       
  37.     //注意在onResume、onDestroy和onPause中控制mapview和地图管理对象的状态  
  38.   
  39.     @Override  
  40.     protected void onResume() {  
  41.         // TODO Auto-generated method stub  
  42.         mapView.onResume();  
  43.         if(bMapManager!=null){  
  44.         bMapManager.start();  
  45.         }  
  46.         super.onResume();  
  47.     }  
  48.       
  49.     @Override  
  50.     protected void onDestroy() {  
  51.         // TODO Auto-generated method stub  
  52.         mapView.destroy();  
  53.         if(bMapManager!=null){  
  54.             bMapManager.destroy();  
  55.             bMapManager=null;  
  56.         }  
  57.         super.onDestroy();  
  58.     }  
  59.       
  60.     @Override  
  61.     protected void onPause() {  
  62.         // TODO Auto-generated method stub  
  63.         mapView.onPause();  
  64.         if(bMapManager!=null){  
  65.             bMapManager.stop();  
  66.         }  
  67.         super.onPause();  
  68.     }  
  69.   
  70. }  

        运行程序即可调启百度地图服务,展示您所需的地图即可。


0 0
原创粉丝点击