场景
效果
在使用百度地图API之前需要先在百度地图开放平台中申请API_KEY
http://lbsyun.baidu.com/index.php
申请API_KEY
登录百度开放平台后找到控制台下的应用管理-创建应用
依次输入应用名,应用类型选择Android SDK
然后下面需要输入发布版SHA1和包名
获取应用SHA1
首先来到.Android文件所在的位置,默认位置如下
如果修改过就要到修改的路径下。
AndroidStudio修改默认C盘配置文件夹(.android.gradle.AndroidStudio)以及修改后避免踩的坑:
我这里是修改过,所以这里的路径是在D:\Android
在此路径下打开命令行窗口。
这里采用使用JDK自带的keytool工具生成
keytool默认路径:C:\Program Files\Java\jdk1.8.0_181\bin
然后将keytool.exe拖到上面打开的.Android所在路径命令行窗口中,然后再后面输入
-list -v -keystore debug.keystore
回车。然后提示输入密钥库命令,直接回车
然后就可以在证书指纹中获取SHA1
然后再回到百度开放平台点击提交。
就可以获取开发密钥了。
获取Android地图SDK
然后再回到百度开放平台中开发文档下的Android开发下Android地图SDK
然后选择自定义下载
然后这里只勾选几个基本功能,具体功能根据自己需求勾选,然后点击下方的开发包和示例代码进行下载
项目中集成SDK
使用AndroidStudio新建项目,将项目视图由Android切换为Project
这样就会显示libs目录,然后解压上面下载的开发包,可以看到其下面libs目录下两个jar包,将其复制到项目的lib下
然后选中这两个jar包右键Add As Library,添加到库
然后在src/main下新建JNIlibs目录
然后将上面SDK下libs下的所有目录复制到此目录下
然后将项目切换回Android视图下,打开activity_main.xml修改布局文件
将布局修改为相对布局,并添加百度地图组件,并设置id
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"/>
</RelativeLayout>
然后来到MainActivity.java中,首先声明地图组件然后再onCreate方法中初始化地图SDK,注意初始化地图SDK
的代码要放在setContentView的代码前。
然后还需要分别设置地图组件的声明周期。
package com.badao.baidumap;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.MapView;
public class MainActivity extends AppCompatActivity {
private MapView mapView;//声明地图组件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化地图SDK
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.bmapview);
}
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
mapView = null;
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
}
然后打开mainfests下的AndroidManifest.xml
首先添加meta-data标签,内容如下
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="申请的开发密钥"/>
然后进行权限的声明。完整示例代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.badao.baidumap">
<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,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" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="申请的开发密钥"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
这块代码可以参照之前在百度开放平台下载的示例代码。
或者可以参照官网的开发指南
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/showmap
然后需要将项目运行在可联网的真机或者第三方模拟器上