全部服务产品
开发者频道
定价
登录
绘制3D建筑物
下载开发文档

自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建筑物是否有生长动画

效果如下:

上一篇

绘制3D棱柱

下一篇

绘制海量点

本篇文章对您是否有帮助?