浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
      更新时间:2022-10-27

Android 自7.5.4版本起支持3D建筑物单体动画控制。

提供一个坐标点,返回该点附近的建筑物信息,最后以三维动画的形式将建筑物展示在地图上。

绘制3D建筑物

首先通过BuildingSearchOption 类来设置3D建筑物的属性,然后检索对应的建筑物,最后在检索成功的回调中绘制建筑物:

示例代码如下:

// 设置3D建筑物的属性
 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;
                }

                // 楼面外接矩形建造器
                LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder();
                // 获取建筑物的各个楼面
                for (int i = 0; i < result.getBuildingList().size(); i++) {
                    BuildingInfo buildingInfo = result.getBuildingList().get(i);
                    // 创建3D棱柱覆盖物选类配置参数
                    PrismOptions prismOptions = new PrismOptions();
                    prismOptions.setBuildingInfo(buildingInfo);
                    prismOptions.setSideFaceColor(0xAAFF0000);
                    prismOptions.setTopFaceColor(0xAA00FF00);
                    // 控制3D建筑物单体动画
                    prismOptions.setAnimation(true);
                    // 设置3D建筑物开始显示层级
                    prismOptions.setShowLevel(17);
                    LatLngBounds latLngBounds = mBaiduMap.getOverlayLatLngBounds(prismOptions);
                    if (latLngBounds != null) {
                        boundsBuilder.include(latLngBounds.northeast).include(latLngBounds.southwest);
                    }
                    // 添加3D棱柱
                    mBuildingPrism = (Prism) mBaiduMap.addOverlay(prismOptions);
                }

                // 获取3D建筑物外接矩形
                latLngBounds = boundsBuilder.build();
                // 令3D建筑物适应地图展示
                if (latLngBounds != null) {
                    mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLngBounds(latLngBounds));
                }
            }
        });

绘制效果如图:

building_1027.png

生长动画如下:

buildingdh.gif

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消