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

WebAPI文档全面上新

新增示例代码、在线运行等功能,帮助您实现快速接入,前往体验吧!

体验新版
      更新时间:2023-04-10

自v7.5.4起,百度地图SDK新增3D建筑物动画功能,支持开发者对特定建筑物进行单体动画控制。

自v7.5.7起,百度地图SDK新增3D建筑物的楼层动画功能,支持开发者自定义建筑物中楼层的绘制效果,包括:楼层高度、楼层颜色、楼层纹理、楼层动画类型等。

绘制3D建筑物

开发者通过BuildingSearchOption检索指定坐标点对应的建筑物楼块信息,根据楼块信息创建建筑物选项BuildingOptions,开发者也可通过BuildingOptions设置3D建筑物的属性,然后将3D建筑物绘制到地图上。
开发者可设置BaiduMap::setOn3DBuildingListener(Building3DListener listener)方法,用以监听建筑物楼层动画结束回调消息。 绘制BuildingOptions,并监听楼层动画的代码如下:

 // 3D建筑物对象
 Building mBuildingPrism;
 // 创建检索建筑物的选项
 BuildingSearchOption buildingSearchOption = new BuildingSearchOption();
 // 设置检索的坐标点
 buildingSearchOption.setLatLng(requestLatlng);
 // 创建检索建筑物的对象
 mBuildingSearch = BuildingSearch.newInstance();
 // 开始检索
 mBuildingSearch.requestBuilding(buildingSearchOption);
 // 在检索成功的回调中绘制建筑物
 mBuildingSearch.setOnGetBuildingSearchResultListener(new OnGetBuildingSearchResultListener() {
            @Override
            public void onGetBuildingResult(BuildingResult result) {
                if (null == result || result.error != SearchResult.ERRORNO.NO_ERROR) {
                    return;
                }

                // 获取建筑物的各个楼面
                for (int i = 0; i < result.getBuildingList().size(); i++) {
                    BuildingInfo buildingInfo = result.getBuildingList().get(i);
                    // 创建3D建筑物选项
                    BuildingOptions buildingOptions = new BuildingOptions();
                    // 设置建筑物信息
                    buildingOptions.setBuildingInfo(buildingInfo);
                    // 设置建筑物侧面颜色
                    buildingOptions.setSideFaceColor(0xAAFF0000);
                    // 设置建筑物顶部颜色
                    buildingOptions.setTopFaceColor(0xAA00FF00);
                    // 设置楼层动画类型(慢速、快速、正常)
                    buildingOptions.setBuildingFloorAnimateType(Prism.AnimateType.AnimateSlow);
                    // 设置楼层初始高度
                    buildingOptions.setFloorHeight(buildingInfo.getHeight());
                    buildingOptions.setFloorColor(0xFF0000AA);
                    // 设置是否打开建筑物立楼动画
                    buildingOptions.setAnimation(true);
                    // 设置建筑物开始显示层级
                    buildingOptions.setShowLevel(16);
                    // 向地图添加3D建筑物
                    mBuildingPrism = (Building) mBaiduMap.addOverlay(buildingOptions);
                }
                // 设置楼层动画监听
                mBaiduMap.setOn3DBuildingListener(new Building3DListener() {
                    @Override
                    public void onBuildingFloorAnimationStop(Building buildings) {
                        Log.d("Building3DPrismDemo ", "setPrismCallBack() ::onBuildingFloorAnimationStop");
    
                    }
                });
                    
            }
        });

Building的属性如下:

属性名
备注
buildingInfo
建筑物楼块信息
floorHeight
楼层高度
floorColor
楼层颜色
floorSideTextureImage
楼层纹理
showLevel
建筑物显示的层级
isAnimation
建筑物是否有生长动画

效果如下:

https://mapopen-pub-androidsdk.cdn.bcebos.com/map/7_5_7/3dbuilding_1.mp4
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消