全部服务产品
开发者频道
定价
登录
获取室内定位
下载开发文档
简介

利用定位SDK,不仅可以获取室外定位的经纬度信息、周边POI信息等,也可以获取室内建筑的定位信息。
目前百度已覆盖火车站、机场、商场、客运汽车站、博物馆、综合医院、图书馆等多种场景,利用三角定位技术、增强Wi-Fi指纹模型技术、地磁技术、蓝牙技术等,提供精度最高可达1到3米的室内定位服务。
注意:如百度未覆盖您的室内地图数据、室内店铺等信息变更第一时间更新定位信息,或其他室内图室内定位相关需求,您可以联系我们

百度也提出了室内定位生态联盟,邀请各行各业的开发者一起联合提升室内定位精度。

使用百度定位SDK室内定位功能步骤如下:
1. 第一步,准备工作

在使用定位SDK进行具体开发工作之前,需获取密钥(AK), 并对开发工程进行环境配置工作。详细介绍请参考项目创建部分的说明。 此外, Google在Android 6.0中引入了动态权限获取机制,开发者在使用定位SDK之前, 请详细了解关于Android 6.0系统开发须知。

2. 第二步,初始化LocationClient类

请在主线程中声明LocationClient类对象,该对象初始化需传入Context类型参数。 推荐使用getApplicationConext()方法获取全进程有效的Context。
核心代码段如下:

public LocationClient mLocationClient = null;
private MyLocationListener myListener = new MyLocationListener();
//BDAbstractLocationListener为7.2版本新增的Abstract类型的监听接口
//原有BDLocationListener接口暂时同步保留。具体介绍请参考后文中的说明
public void onCreate() {
mLocationClient = new LocationClient(getApplicationContext());
//声明LocationClient类
mLocationClient.registerLocationListener(myListener);
//注册监听函数
}
3. 第三步,配置定位SDK参数

使用百度定位sdk的室内定位功能无需特别配置,初始化过程跟使用普通定位模式是完全一样的,配置好之后,调用mLocationClient.start()即可。
因为支持百度高精度室内定位的地点是有限的,因此要想开启室内定位模式,必须先要判断哪里支持室内定位,在支持的地方开启才是有用的。

4. 第四步,判断支持室内定位地点并开启室内定位模式

开发者可以通过回调的BDLocation中的getFloor()是否为空, 判断当前是否已经处于室内定位区域。核心代码如下:

public LocationClient mLocationClient = null;
public class MyLocationListener extends BDAbstractLocationListener{
@Override
public void onReceiveLocation(BDLocation location){
//此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
if (location.getFloor() != null) {
// 当前支持高精度室内定位
String buildingID = location.getBuildingID();// 百度内部建筑物ID
String buildingName = location.getBuildingName();// 百度内部建筑物缩写
String floor = location.getFloor();// 室内定位的楼层信息,如 f1,f2,b1,b2
mLocationClient.startIndoorMode();// 开启室内定位模式(重复调用也没问题),开启后,定位SDK会融合各种定位信息(Gnss,WI-FI,蓝牙,传感器等)连续平滑的输出定位结果;
}
}
}

在普通定位模式下,实际上开发者也会收到floor不为空的location结果, 只不过需要调用startIndoorMode()方法, 开启针对高精度室内定位专门优化过的定位模式,该模式开启后,可以对外输出连续、平滑的室内定位结果, 极大优化用户室内定位体验与效果。

5. 第五步,关闭室内定位模式

调用mLocationClient.stopIndoorMode()方法即可。

上一篇

获取周边POI

下一篇

北斗单模定位

本篇文章对您是否有帮助?