所有文档
开发指南
利用定位sdk,不仅可以获取室外定位的经纬度信息、周边poi信息等,也可以获取室内建筑的定位信息。
目前百度已覆盖火车站、机场、商场、客运汽车站、博物馆、综合医院、图书馆等多种场景,利用三角定位技术、增强wi-fi指纹模型技术、地磁技术、蓝牙技术等,提供精度最高可达1到3米的室内定位服务。
注意:如百度未覆盖您的室内地图数据、室内店铺等信息变更第一时间更新定位信息,或其他室内图室内定位相关需求,您可以。
百度也提出了室内定位生态联盟,邀请各行各业的开发者一起联合提升室内定位精度。
在使用定位sdk进行具体开发工作之前,需, 并对开发工程进行环境配置工作。详细介绍请参考项目创建部分的说明。 此外, google在android 6.0中引入了动态权限获取机制,开发者在使用定位sdk之前, 请详细了解关于android 6.0系统开发须知。
请在主线程中声明locationclient类对象,该对象初始化需传入context类型参数。 推荐使用getapplicationconext()方法获取全进程有效的context。
核心代码段如下:
public locationclient mlocationclient = null;private mylocationlistener mylistener = new mylocationlistener();//bdabstractlocationlistener为7.2版本新增的abstract类型的监听接口//原有bdlocationlistener接口暂时同步保留。具体介绍请参考后文中的说明public voidoncreate(){mlocationclient = new locationclient(getapplicationcontext());//声明locationclient类mlocationclient.registerlocationlistener(mylistener);//注册监听函数}
使用百度定位sdk的室内定位功能无需特别配置,初始化过程跟使用普通定位模式是完全一样的,配置好之后,调用mlocationclient.start()即可。
因为支持百度高精度室内定位的地点是有限的,因此要想开启室内定位模式,必须先要判断哪里支持室内定位,在支持的地方开启才是有用的。
开发者可以通过回调的bdlocation中的getfloor()是否为空, 判断当前是否已经处于室内定位区域。核心代码如下:
public locationclient mlocationclient = null;public class mylocationlistener extends bdabstractlocationlistener{@overridepublic voidonreceivelocation(bdlocation location){//此处的bdlocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果if(location.getfloor()!= null){// 当前支持高精度室内定位string buildingid = location.getbuildingid();// 百度内部建筑物idstring buildingname = location.getbuildingname();// 百度内部建筑物缩写string floor = location.getfloor();// 室内定位的楼层信息,如 f1,f2,b1,b2mlocationclient.startindoormode();// 开启室内定位模式(重复调用也没问题),开启后,定位sdk会融合各种定位信息(gnss,wi-fi,蓝牙,传感器等)连续平滑的输出定位结果;}}}
在普通定位模式下,实际上开发者也会收到floor不为空的location结果, 只不过需要调用startindoormode()方法, 开启针对高精度室内定位专门优化过的定位模式,该模式开启后,可以对外输出连续、平滑的室内定位结果, 极大优化用户室内定位体验与效果。
调用mlocationclient.stopindoormode()方法即可。
上一篇
下一篇
本篇文章对您是否有帮助?