编写不易,如有转载,请声明出处:http://blog.csdn.net/zxc514257857/article/details/69768308
准备工作
-
使用百度帐号,登录百度地图开放平台 ,网址是:http://lbsyun.baidu.com
-
在“开发”栏选择“Android地图SDK”,选择左侧的开发指南,按照指南的指导进行操作
-
开发指南—>简介中要求我们下载最新版的地图SDK,网址是:http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download,于是选择自定义下载了Android SDK v4.3.0的开发包和示例代码
-
开发指南—>申请密钥中要求我们申请百度地图的key,网址是:http://lbsyun.baidu.com/apiconsole/key,网址进去后点击创建应用,出现如下界面:
重要的是需要填写发布版SHA1值(即有正式版签名的SHA1值)和开发版的SHA1值(即debug版签名的SHA1值)
- - - 那么发布版SHA1值该如何获取呢?
首先要拥有正式版签名,不知道如何操作的见我的上一篇博客: Android中对应用程序进行签名的两种方法 http://blog.csdn.net/zxc514257857/article/details/69697764
打开命令行输入:
keytool.exe -list -v -keystore C:\Users\Administrator\Desktop\BaiduMap.jks
// -keystore数字证书名称及路径(默认在C:\Users\Administrator目录下,但我将其移动到了桌面上)
详细步骤如下图:
生成了我们所需要的发布版SHA1值
- - - 开发版的SHA1值如何获取呢?
打开命令行输入:
//进入到android签名目录
cd .android
//然后输入
keytool.exe -list -v -keystore debug.keystore
//输入密码android(系统默认)
详细步骤如下图:
于是就生成了我们所需要的开发版SHA1值
- - - 应用程序的包名又如何得知呢?
如下图:
点击提交就创建完成了一个应用,并获得了该应用的AK即AppKey
开发指南—>配置环境及发布,我们参照Android Studio工程配置方法进行配置
-
我们将刚下载的BaiduLBS_AndroidSDK_Sample.zip解压出来,找到BaiduMap_AndroidSDK_v4.3.0_Sample,将BaiduMapsApiASDemo中的app—>libs目录下的所有jar文件拷贝到我们项目的libs目录中,然后将jar文件添加file依赖。其他的so文件拷贝至src/main/目录下新建jniLibs目录中
-
应用混淆时,添加如下代码:
-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}
-dontwarn com.baidu.**
保证百度类不能被混淆,否则会出现网络不可用等运行时异常
开发指南—>Hello BaiduMap 显示百度地图简单教程
- Demo效果展示如下:
如果代码正确,则会出现这个界面,默认将北京天安门作为中心
-
创建并配置工程(过于简单,不再赘述)
-
在AndroidManifest中添加开发密钥、所需权限等信息
- - - 在application中添加开发密钥
- - - 添加所需权限
//AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- 在布局xml文件中添加地图控件
//(layout)activity_main
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
- 应用程序创建时初始化 SDK引用的Context 全局变量
//MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
}
}
- 创建地图Activity,管理地图生命周期
//MainActivity
public class MainActivity extends AppCompatActivity {
private MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
initView();
}
private void initView(){
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
}
}
注:本Demo用的百度的Key为私人的,如果要正常运行,得自己去百度地图API控制台申请Key,来替换Mainfest中的key
Demo下载请移步:http://download.csdn.net/detail/zxc514257857/9808064
如需了解百度地图集成的案例使用请移步:Android中第三方SDK集成之百度地图集成(案例一) http://blog.csdn.net/zxc514257857/article/details/72083693
----------因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!----------