androidsdk | 百度地图API SDK (baidu.com)
1.官方服务
2.通过gradle集成sdk
阅读官方文档可知有两种集成百度地图sdk的方法,这里我们采用 方法二:通过Gradle 集成sdk
方法二:通过Gradle 集成sdk
在build.gradle下加入一下依赖(注意不要加错位置哦)
ndk {
// 设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
}
Tips:这里我们第一次用到so文件的开发库,不同于之前用到的jar库,so库它是由c/c++代码开发的
.jar文件 java .so文件 c/c++
3.导入依赖
并导入一下依赖包
implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.4.0'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.4.0'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Util:7.4.0'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location_All:9.1.8'
4.注册密钥
开发者在使用SDK之前需要获取百度地图移动版开发密钥(AK),该AK与您的百度账户相关联。请妥善保存您的AK,地图初始化时需要使用AK。
4.1找到签名密钥文件
在自己电脑下找到如下路径C:\Users\用户名\.android
,找到debug.keystore文件
找到签名密钥文件,这个每一个人的Android Studio的签名密钥文件都是唯一的。找到这个文件后我们需要破解它得到密钥
4.2破解签名密钥文件
通过java环境破解密钥,找到javajdk的安装路劲,找到keytool.exe文件
找到这个路径直接选中keytool文件夹拖到cmd窗口即可
然后还要在这个路径下加上如下命令
-list -v -keystore debug.keystore
回车输入口令 :
android
终于成功破解出密钥啦,就是SHA1后面的那一串
5.获取开发密钥(AK)
点击此地址获取开发密钥
百度地图 SDK开发密钥的申请地址为:https://lbs.baidu.com/apiconsole/key
点击创建应用
在项目的Manifest
文件下可以找到项目包名
提交之后,终于!终于!!终于!!!我们得到了我们的AK(开发密钥)
6.配置显示地图
6.1配置AndroidManifest.xml
文件
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="刚刚我们获取到的开发密钥(AK)" />
6.2在application
外部添加如下权限声明
<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
6.3在布局文件中添加地图容器
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
</androidx.constraintlayout.widget.ConstraintLayout>
6.4地图初始化
注意:在SDK各功能组件使用之前都需要调用“SDKInitializer.initialize(getApplicationContext())”,因此建议在应用创建时初始化SDK引用的Context为全局变量。
新建一个自定义的Application,在其onCreate方法中完成SDK的初始化。示例代码如下:
public class DemoApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
SDKInitializer.initialize(this);
//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
SDKInitializer.setCoordType(CoordType.BD09LL);
}
}
在Manifest文件中注册Activity
android:name=".DemoApplication"