百度定位SDK的使用

1,198 阅读2分钟

准备工作

登录百度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…