Skip to content

androidsdk | 百度地图API SDK (baidu.com)

1.官方服务

2.通过gradle集成sdk

阅读官方文档可知有两种集成百度地图sdk的方法,这里我们采用 方法二:通过Gradle 集成sdk

方法二:通过Gradle 集成sdk

在build.gradle下加入一下依赖(注意不要加错位置哦)

java
ndk {
    // 设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
    abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
}

Tips:这里我们第一次用到so文件的开发库,不同于之前用到的jar库,so库它是由c/c++代码开发的

.jar文件    java .so文件     c/c++

3.导入依赖

并导入一下依赖包

java
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窗口即可

然后还要在这个路径下加上如下命令

java
 -list -v -keystore debug.keystore

回车输入口令  :

java
android

终于成功破解出密钥啦,就是SHA1后面的那一串

5.获取开发密钥(AK)

点击此地址获取开发密钥

百度地图 SDK开发密钥的申请地址为:https://lbs.baidu.com/apiconsole/key

点击创建应用

在项目的Manifest文件下可以找到项目包名

提交之后,终于!终于!!终于!!!我们得到了我们的AK(开发密钥)

6.配置显示地图

6.1配置AndroidManifest.xml文件

xml
<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="刚刚我们获取到的开发密钥(AK)" />

6.2在application外部添加如下权限声明

xml
<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,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
<?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的初始化。示例代码如下:

java
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

xml
 android:name=".DemoApplication"

网络定位

9种危险权限(动态权限申请)