http://lbsyun.baidu.com/
进入百度地图开放平台,登录百度账号
选择应用类型为Android SDK
发布版SHA1,和开发板SHA1的获取方法为:
找到电脑上的.android路径,一般都在C盘用户目录下,
有的配置Android环境变量的话可能在SDK的目录下
然后打开Android Studio,打开Terminal
进入到.android目录下
输入 keytool -list -v -keystore debug.keystore
密钥库口令不用输入,直接回车
会显示证书指纹,里面有SHA1,直接复制就可以
输入SHA1和包名后,会自动生成安全码
然后点击提交,这样我们就生成了一个密钥
然后在百度地图首页
接下来根据自己的项目需求来勾选相应的功能
点击开发包下载,这就是下载好的开发包
以上就是百度地图API的准备工作
————————————————————————————————————————————————————————
开发步骤:
- 配置百度地图SDK
- 布局界面
- 初始化SDK引用的Context全局变量
- 管理地图生命周期
将之前下载的BaiduLBS_AndroidSDK_Lib解压,并将里面libs目录中的两个jar包复制到
Android Studio项目下libs目录下
将libs目录下的jar包添加到库当中
点击ok
同时在build.gradle中会生成工程所依赖的对应的Jar文件说明,代码如下
dependencies{
implementation files('libs/BaiduLBS_Android.jar')files('libs/BaiduLBS_Android.jar')
}
在src目录下的main目录中创建jniLibs目录
然后将百度地图SDK中的lib目录复制到刚刚创建的目录
但有时候这样工程并不会自动加载libs下的so文件,
需配置so文件的路径为该libs路径,关联所有地图SDK的so文件,
即在app文件夹下的bulid.gradle加入代码: jniLibs.srcDir 'libs' ,详细代码如下:
(在bulidTypes {} 结束后添加此段代码)
sourceSets{
main{
jniLibs.srcDir 'libs'
//说明so的路径为该libs路径,关联所有地图SDK的so文件
}
}
接下来在application中添加开发密钥(AK)
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />
</application>
添加所需权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
//获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.INTERNET"/>
//网络权限,当禁用后,无法进行检索等相关业务
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//读取设备硬件信息,统计数据
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
//读取系统信息,包含系统版本等信息,用作统计
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//获取设备的网络状态,鉴权所需网络代理
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//获取统计数据
<uses-permission android:name="android.permission.CAMERA" />
//使用步行AR导航,配置Camera权限
在MainActivity.java中的代码如下
private MapView mMapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化地图SDK,
//需要在setContentView(R.layout.activity_main);上面
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = findViewById(R.id.bmapView);
//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
SDKInitializer.setCoordType(CoordType.BD09LL);
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
mMapView = null;
}
注:最好使用真机运行