浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
室内高精度定位
功能场景
本示例展示了在百度地图室内图覆盖的场所中如何获取精准的室内定位信息。
Android
iOS
//mapopen-website-wiki.bj.bcebos.com/demos/室内定位.mp4
1590746640|//mapopen-website-wiki.bj.bcebos.com/demos/newqrcodes/室内定位.png
扫码体验
使用产品
Android定位SDK|/index.php?title=android-locsdk
>
室内定位|/index.php?title=android-locsdk/guide/get-location/indoors
下载源码
//mapopen-website-wiki.bj.bcebos.com/demos/location/IndoorLocationDemo.zip
核心接口
接口
描述
备注
BaiduMap
setIndoorEnable(boolean enabled)
设置是否显示室内图, 默认室内图不显示 室内图只有在缩放级别[17, 22]范围才生效,但是在18级之上(包含18级)才会有楼层边条显示。
地图SDK
BaiduMap
setOnBaseIndoorMapListener(BaiduMap.OnBaseIndoorMapListener listener)
设置室内图模式监听者
地图SDK
OnBaseIndoorMapListener
onBaseIndoorMapMode(boolean in, MapBaseIndoorMapInfo info)
地图进入室内图模式回调函数,in:是否进入室内图模式,info :室内图信息
地图SDK
LocationClient
startIndoorMode()
打开室内定位模式,该模式下会加快定位速度并输出连续室内定位结果;当BDLocation.getFloor()!= null时,表明该区域已经支持室内定位,开发者可以尝试调用该接口,体验高精度室内定位功能
定位SDK
LocationClient
stopIndoorMode()
关闭室内定位模式
定位SDK
LocationClient
BDAbstractLocationListener
监听定位结果回调函数
定位SDK
核心代码
1.设置地图进入室内图模式回调函数
JAVA
BaiduMap.OnBaseIndoorMapListener   onBaseIndoorMapListener = new BaiduMap.OnBaseIndoorMapListener() {
    @Override
    public void onBaseIndoorMapMode(boolean b, MapBaseIndoorMapInfo mapBaseIndoorMapInfo) {
        // 设置楼层数据
        mFloorListAdapter.setmFloorList(mapBaseIndoorMapInfo.getFloors());
        mStripListView.setVisibility(View.VISIBLE);
        mStripListView.setStripAdapter(mFloorListAdapter);
        mMapBaseIndoorMapInfo = mapBaseIndoorMapInfo;
    }
};
                
复制
深色
复制成功
2.开启室内定位图层设置室内图模式监听
JAVA
mBaiduMap = mMapView.getMap();
// 设置是否显示室内图, 默认室内图不显示
mBaiduMap.setIndoorEnable(true);
// 设置室内图模式监听
mBaiduMap.setOnBaseIndoorMapListener(onBaseIndoorMapListener);
                
复制
深色
复制成功
3.开启室内定位模式
JAVA
/**
* 定位SDK监听函数
*/
public class MyLocationListenner extends BDAbstractLocationListener {

private String lastFloor = null;

@Override
public void onReceiveLocation(BDLocation location) {
// map view 销毁后不在处理新接收的位置
if (location == null || mMapView == null) {
    return;
}
String bid = location.getBuildingID();
if (bid!= null && mMapBaseIndoorMapInfo!= null) {
    // 校验是否满足室内定位模式开启条件
    if (bid.equals(mMapBaseIndoorMapInfo.getID())) {
        // 楼层
        String floor = location.getFloor().toUpperCase();
        boolean needUpdateFloor = true;
        if (lastFloor == null) {
            lastFloor = floor;
        } else {
            if (lastFloor.equals(floor)) {
                needUpdateFloor = false;
            } else {
                lastFloor = floor;
            }
        }
        if (needUpdateFloor) {
            // 切换楼层
            mBaiduMap.switchBaseIndoorMapFloor(floor, mMapBaseIndoorMapInfo.getID());
            mFloorListAdapter.setSelectedPostion(mFloorListAdapter.getPosition(floor));
            mFloorListAdapter.notifyDataSetInvalidated();
        }

        if (!location.isIndoorLocMode()) {
            // 开启室内定位模式,只有支持室内定位功能的定位SDK版本才能调用该接口
            mLocationClient.startIndoorMode();
        }
    }
}  
                
复制
深色
复制成功
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消