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

Android 地图SDK

百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

室内地图简介

自v4.0版起,百度地图SDK室内图功能正式上线,辅助开发者实现全新的地理位置服务体验,室内地图与百度地图App同步更新。 支持的公众建筑包含购物商场、机场和火车站等交通枢纽,医院等,覆盖全国约4000+个大型购物中心,覆盖类型和城市还在持续增加中。

本章节将对显示室内图、获取室内图信息、楼层切换、室内POI检索、室内路线规划等做进一步的说明。

显示室内图

开启室内地图后,如果可见区域内包含室内地图覆盖区域(如:王府井等知名商场),且缩放达到一定级别,便可直接在地图上看到精细室内地图效果。

仅室内图区域与显示屏幕有交集时,最大支持22级地图缩放;室内图区域与显示屏幕无交集时,基础地图支持最大缩放到21级。

打开室内图的代码和显示效果如下:

mBaiduMap.setIndoorEnable(true);//打开室内图,默认为关闭状态
注意

1. 因路况、卫星图和城市热力图,仅支持20级地图数据显示,室内地图放大到22级,打开路况、卫星图或城市热力图,无相应数据显示。

2. 室内图默认是关闭的

showIndoorMap1.png

获取室内图信息以及实现楼层切换

需要对室内图进行更多的操作,包括获取室内图信息以及实现楼层切换,您可以采用如下方式:

设置监听事件来监听进入和移出室内图:

mBaiduMap.setOnBaseIndoorMapListener(new BaiduMap.OnBaseIndoorMapListener() {
    @Override
    public void onBaseIndoorMapMode(boolean b, MapBaseIndoorMapInfo mapBaseIndoorMapInfo) {
        if (b) {
            // 进入室内图
            // 通过获取回调参数 mapBaseIndoorMapInfo 便可获取室内图信息,包含楼层信息,室内ID等
        } else {
            // 移除室内图
        }
    }
});

实现楼层间地图切换,展示不同楼层的室内图:

SwitchFloorError switchFloorError = mBaiduMap.switchBaseIndoorMapFloor(strFloor, strID); // 切换楼层信息
//strID 通过 mMapBaseIndoorMapInfo.getID()方法获得

上面代码中,strFloor表示室内图楼层,格式为F1,B1… strID 表示室内图ID;返回值switchFloorError 用于标识楼层切换错误信息, 具体如下:

SwitchFloorError.SWITCH_OK:     切换成功
 
SwitchFloorError.FLOOR_INFO_ERROR:   切换楼层, 室内ID信息错误
 
SwitchFloorError.FLOOR_OVERLFLOW:    楼层溢出 即当前室内图不存在该楼层

SwitchFloorError.FOCUSED_ID_ERROR:  切换楼层室内ID与当前聚焦室内ID不匹配
 
SwitchFloorError.SWITCH_ERROR: 切换楼层失败

如果您对此处的用法仍有疑惑,您可以下载官方demo, 参考IndoorMapDemo

室内POI检索

自v4.0版起,新增室内POI检索,支持检索室内地图上的POI,即输入关键字后,返回室内图内的POI的点。

使用室内POI检索的步骤如下:

1创建检索当前建筑物室内POI检索对象
mPoiSearch = PoiSearch.newInstance();
2设置POI检索监听者
mPoiSearch.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() );
3设置检索参数
PoiIndoorOption option = new PoiIndoorOption().poiIndoorBid(bid).poiIndoorWd(wd);
4发起检索请求
mPoiSearch.searchPoiIndoor( option);
5释放POI检索实例
mPoiSearch.destroy();
检查室内图当前状态

1. 室内图默认是关闭的,检索室内POI需要打开室内图功能。

2. 室内图需要显示在屏幕范围内,才支持检索当前室内图的室内POI。

室内路线规划

自v4.1版起,新增室内线路规划,目前仅支持检索起点、终点坐标在同一室内图上的线路规划,即仅支持同一商场,不支持两个不同的商场内的起、终点。

1创建室内线路规划检索实例
mSearch = RoutePlanSearch.newInstance();
2创建 室内线路规划检索监听者
OnGetRoutePlanResultListener routeListener = new OnGetRoutePlanResultListener()   {
       @Override
       public void onGetIndoorRouteResult(IndoorRouteResult result) {
           //获取室内线路规划检索结果
       }
    }

3设置 室内线路规划检索监听者
mSearch.setOnGetRoutePlanResultListener( routeListener );
4准备检索起、终点信息;
IndoorPlanNode startNode = new IndoorPlanNode(new LatLng(39.917380, 116.37978), "F1");

IndoorPlanNode endNode = new IndoorPlanNode(new LatLng(39.917239, 116.37955), "F6");

IndoorRoutePlanOption irpo = new IndoorRoutePlanOption().from(startNode).to(endNode);

5发起室内线路规划检索
mSearch.walkingIndoorSearch(irpo);
6释放检索实例
mSearch.destroy();