更新时间: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