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 中定义的名称,例如:
2、使用 Android studio 开发
包名需要在文件build.gradle中查询 applictionId,例如:
Android签名证书的sha1值获取方式有两种:
第一种方法:使用keytool
第1步:运行进入控制台
第2步:定位到.android文件夹下,输入cd .android
第3步:输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android),例如:
其中keytool为jdk自带工具;keystorefile为Android 签名证书文件
第二种方法:在eclipse中,在adt 22中直接查看
如果使用adt 22,可以在eclipse中直接查看:windows -> preferance -> android -> build。 如下图示:
其中“SHA1 fingerprint”值即为Android签名证书的sha1值
成功创建KEY
在输入安全码后,点击“确定”完成应用的配置工作,您将会得到一个创建的Key,请妥善保管您所申请的Key。到这您就可以使用新Key来完成您的开发工作了。
3. 创建Android工程、导入百度地图开发包;4.在AndroidManifest.xml中添加各种权限;
代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.baidumap.basemap"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk
- android:minSdkVersion="8"
- android:targetSdkVersion="8" />
- <supports-screens android:largeScreens="true"
- android:normalScreens="true"
- android:smallScreens="true"
- android:resizeable="true"
- android:anyDensity="true"/>
- <!-- 添加屏幕支持 -->
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name="com.baidumap.basemap.MainActivity"
- android:label="@string/app_name"
- android:screenOrientation="sensor"
- android:configChanges="orientation|keyboardHidden">
- <!-- 注意添加转屏的相关设置 -->
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <!--使用网络功能所需权限 -->
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
- <uses-permission android:name="android.permission.INTERNET"></uses-permission>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
- <!-- SDK离线地图和cache功能需要读写外部存储器 -->
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
- <!-- 获取设置信息和详情页直接拨打电话需要以下权限 -->
- <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
- <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
- </manifest>
5:在布局文件中添加百度地图控件(mapview);
代码如下:
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity" >
- <!-- 放入百度地图的mapview -->
- <com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:clickable="true"/>
- </RelativeLayout>
-
6.在主类中定义mapview对象和地图管理对象,在oncreate方法里需要首先初始化地图管理对象,然后初始化mapview对象,并且设置mapview的相应状态;
代码如下:
- import com.baidu.mapapi.BMapManager;
- import com.baidu.mapapi.map.MapController;
- import com.baidu.mapapi.map.MapView;
- import com.baidu.platform.comapi.basestruct.GeoPoint;
- import android.os.Bundle;
- import android.app.Activity;
- public class MainActivity extends Activity {
- BMapManager bMapManager = null; // 定义管理sdk的对象
- MapView mapView = null; // 定义mapview对象
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // 初始化管理对象,注意要在setContentView(R.layout.activity_main)之前初始化,否则会报错
- bMapManager = new BMapManager(getApplication());
- bMapManager.init("输入您申请的key", null);
- setContentView(R.layout.activity_main);
- // 初始化mapview对象,并且设置显示缩放控件
- mapView = (MapView) findViewById(R.id.bmapsView);
- mapView.setBuiltInZoomControls(true);
- // 定义地图控件,获取mapview的控制,并把地图范围定位北京市
- MapController mapController = mapView.getController();
- GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));
- mapController.setCenter(point);
- mapController.setZoom(12);
- }
- //注意在onResume、onDestroy和onPause中控制mapview和地图管理对象的状态
- @Override
- protected void onResume() {
- // TODO Auto-generated method stub
- mapView.onResume();
- if(bMapManager!=null){
- bMapManager.start();
- }
- super.onResume();
- }
- @Override
- protected void onDestroy() {
- // TODO Auto-generated method stub
- mapView.destroy();
- if(bMapManager!=null){
- bMapManager.destroy();
- bMapManager=null;
- }
- super.onDestroy();
- }
- @Override
- protected void onPause() {
- // TODO Auto-generated method stub
- mapView.onPause();
- if(bMapManager!=null){
- bMapManager.stop();
- }
- super.onPause();
- }
- }
运行程序即可调启百度地图服务,展示您所需的地图即可。