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

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
3D楼块及楼层动画
功能场景
可用于智能硬件场景的定位到楼和本地生活店铺位置展示,定向展示目标建筑物的3D楼块和楼层,支持按照实际高度绘制带高度的Maker。
Android
//mapopen-website-wiki.bj.bcebos.com/demos/SVID_20230420_172110_1%20(1).mp4
1590746640|//mapopen-website-wiki.bj.bcebos.com/demos/newqrcodes/3D楼块及楼层动画.png
扫码体验
下载源码
//mapopen-website-wiki.bj.bcebos.com/demos/3D%E6%A5%BC%E5%9D%97/BaiduMapsApiASDemo.zip
核心接口
接口
描述
requestBuilding(BuildingSearchOption option)
发起建筑物检索的请求
BuildingSearch
etOnGetBuildingSearchResultListener(OnGetBuildingSearchResultListener listener)
设置建筑检索的结果监听
OnGetBuildingSearchResultListener
onGetBuildingResult(BuildingResult result)
建筑物检索结果回调
etAnimation(boolean mIsAnimation)
设置建筑物的生长动画
getPoints()
获取建筑物的坐标列表
setFloorColor(int floorColor)
设置建筑物的颜色 格式:0xAARRGGBB
BuildingOptions
setFloorSideTextureImage(BitmapDescriptor floorSideTextureImage)
设置楼块的纹理
setFloorHeight(float floorHeight)
设置楼层的高度
setShowLevel(int showLevel)
设置建筑的显示层级
核心代码
检索建筑物数据(需开通高级权限才可使用)
JAVA
/**
LatLng requestLatlng = new LatLng(23.008468, 113.72953);

private void searchBuilding() {
    BuildingSearchOption buildingSearchOption = new BuildingSearchOption();
    buildingSearchOption.setLatLng(requestLatlng);
    mBuildingSearch.requestBuilding(buildingSearchOption);
}
                
复制
深色
复制成功
回调获取建筑数据并自定义展示
JAVA
/**
public void onGetBuildingResult(BuildingResult result) {
    if (null == result || result.error != SearchResult.ERRORNO.NO_ERROR) {
        return;
    }

    buildingList = result.getBuildingList();
    // 楼面外接矩形建造器
    LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder();
    for (int i = 0; i < buildingList.size(); i++) {
        BuildingInfo buildingInfo = buildingList.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()-10);
        // 控制3D建筑物单体动画
        buildingOptions.setAnimation(true);

        // 设置3D建筑物开始显示层级
        buildingOptions.setShowLevel(16);
        LatLngBounds latLngBounds = mBaiduMap.getOverlayLatLngBounds(buildingOptions);
        if (latLngBounds != null) {
            boundsBuilder.include(latLngBounds.northeast).include(latLngBounds.southwest);
        }
        // 添加3D棱柱
        mBuildingPrism = (Building) mBaiduMap.addOverlay(buildingOptions);;
    }
    if (mBaiduMap.getMapStatus() != null && mBuildingPrism != null) {
        Projection projection = mBaiduMap.getProjection();
        Point srcPoint = projection.geoPoint3toScreenLocation(requestLatlng, (int) mBuildingPrism.getBuildingInfo().getHeight());
        MarkerOptions markerOptionsA = new MarkerOptions().position(projection.fromScreenLocation(srcPoint))
                .icon(bitmapA)// 设置 Marker 覆盖物的图标
                .perspective(false) // 关闭近大远小效果
                .zIndex(10)
                .clickable(true); // 设置Marker是否可点击
        mMarkerA = (Marker) mBaiduMap.addOverlay(markerOptionsA);
    }
    
    // 获取3D建筑物外接矩形
    latLngBounds = boundsBuilder.build();
    // 令3D建筑物适应地图展示
    if (latLngBounds != null) {
        mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLngBounds(latLngBounds));
        MapStatus.Builder builder = new MapStatus.Builder();
        builder.zoom(21).overlook(-40.0f);
        mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
    }
}
                
复制
深色
复制成功
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消