准备工作
登录百度API控制台
API控制台的地址为:lbsyun.baidu.com/apiconsole/…
创建应用
进入API控制台后,点击创建应用,开始填写相关信息。
SHA1的获取方法:Android Studio,进入Terminal工具,输入:keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey (注意目录选择、开发版本、发布版本等问题)密码:原始密码为android
包名的获取方法:包名应该以applicaionId为准,防止build.gradle中的applicationId与 AndroidMainfest.xml中的包名不同,导致AK鉴权失败。
以上各项信息确认填写无误后,点击提交,系统自动生成AK。
实现关键代码
第一步 配置AndroidManifest.xml文件
1.在中加入如下代码配置开发密钥(AK):
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />
</application>
2. 在外部添加权限声明
3.在Application标签中声明定位的service组件
<service android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote"/>
第二步 在对应布局文件中添加地图容器
MapView是View的一个子类,用于在Android View中放置地图。MapView的使用方法与Android提供的其他View一样。
第三步 地图初始化
在SDK各功能组件使用之前都需要调“SDKInitializer.initialize(getApplicationContext())”,因此在应用创建时初始化SDK引用的Context为全局变量。新建一个自定义的Application,在其onCreate方法中完成SDK的初始化。
在AndroidManifest.xml文件中声明该Application
构造地图数据
我们通过继承抽象类BDAbstractListener并重写其onReceieveLocation方法来获取定位数据,并将其传给MapView。
//定位初始化
mLocationClient = new LocationClient(getActivity());
//需注意因本Activity为Fragment,获得Context需通过getActivity()而不能直接使用this获得
//注册监听函数
mLocationClient.registerLocationListener(myListener);
第四步 配置定位SDK参数
LocationClientOption option = new LocationClientOption();
option.setIsNeedLocationDescribe(true);
//需要获得当前点的位置信息,此处必须为true
mLocationClient.setLocOption(option);
//mLocationClient为初始化过的LocationClient对象
//需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用
//更多LocationClientOption的配置,请参照类参考中LocationClientOption类的详细说明
第五步 在对应的Activity内,管理MapView生命周期
即重写onResume()、onPause()、onDestroy()三个函数
第六步,实现BDAbstractLocationListener接口
核心代码如下:
public class MyLocationListener extends BDAbstractLocationListener{
@Override
public void onReceiveLocation(BDLocation location){
//此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
String locationDescribe = location.getLocationDescribe(); //获取位置描述信息
}
}
第七步,获取定位位置信息
//开启地图定位图层
mLocationClient.start();
实现效果
//虚拟机并未实现定位功能,固其定位不是真实位置
百度官方提供了详实的编程规范,其参考网址为lbsyun.baidu.com/index.php?t…
附本项目源码地址:github.com/learnway299…