首页 / 浏览问题 / 移动GIS / 问题详情
android 三维地图 绘制 几何图形 被建筑物遮挡问题
22EXP 2021年07月07日
我的是在绘制 线 面的时候  z轴的高度 要是低于建筑物   线和面的 显示效果 就会被建筑物遮挡   遮挡部分 线和面就会显示不出来    很不美观   我想要的效果是  就算z轴 比建筑物底  画的线 也要能浮在建筑物上显示   类似sdk自带的测量长度 所画出的线怎么实现?

1个回答

您好,绘制几何对象到跟踪图层上显示已经是在最上层显示的,但是如果和建筑物重叠,在某些
视角是会被建筑物遮挡的,如果想一直显示几何对象,可以设置几何对象的高度模式为绝对高度,然后设置Z值。
9,232EXP 2021年07月08日

我这真不走 回调 啊  断点都不进 版本是 com.supermap.realspace_v1012.jar  apk也卸载了 缓存也清了 什么原因 

// 开启距离测量分析
public void startMeasureAnalysis() {
    dataBinding.SceneControl.setAction(Action3D.MEASUREDISTANCE3D);
}

// 开启高度测量分析
public void startMeasureHeight() {
    dataBinding.SceneControl.setAction(Action3D.MEASUREALTITUDE3D);
}

// 开启测量面积分析
public void startSurearea() {
    dataBinding.SceneControl.setAction(Action3D.MEASUREAREA3D);
}
/**
     * 事件交互监听
     */
    public void initAnalySis(SceneControl sceneControl, Tracking3DEvent event) {
        mData.myMesurePoint.add(new Point3D(event.getX(), event.getY(), event.getZ()));
        if (sceneControl.getAction() == Action3D.MEASUREDISTANCE3D) {
             //测量距离
            measureDistance(event);
        } else if (sceneControl.getAction() == Action3D.MEASUREALTITUDE3D) {
            Point3D point3d = new Point3D(event.getX(), event.getY(), event.getZ());
            double length = event.getCurrentHeight();
            Point3D point3d1 = new Point3D(point3d.getX(), point3d.getY(),
                    point3d.getZ() + event.getCurrentHeight());
            Point3D[] p = {point3d, point3d1};
            Point3Ds point3Ds = new Point3Ds(p);
            GeoLine3D geoLine3D = new GeoLine3D(point3Ds);
            GeoStyle3D geoStyle3D = new GeoStyle3D();
            geoStyle3D.setLineWidth(15);
            geoStyle3D.setFillForeColor(new Color(255, 125, 0));
            geoStyle3D.setLineColor(new Color(255, 125, 0));
            geoStyle3D.setAltitudeMode(AltitudeMode.ABSOLUTE);
            geoLine3D.setStyle3D(geoStyle3D);
            double totalaltitude = event.getCurrentHeight();
            sceneControl.getScene().getTrackingLayer().add(geoLine3D, "高度");
            Toast.makeText(MainActivity.this, "共计" + totalaltitude + "米",
                    Toast.LENGTH_LONG).show();

//            measureHeight(event);
        } else if (sceneControl.getAction() == Action3D.MEASUREAREA3D) {
            //测量面积
            measureSurearea(event);
        }
    }

这个问题已经修改了,请使用这个包:链接:https://pan.baidu.com/s/1qkQRoanMqtljKtHCytno3A
提取码:i3t4
可以回调了 反馈个问题 就是测量高度时 点第二个点后 会回调 好多次
老哥   问下这个问题 有结果没?
老哥   问下这个问题 有结果没
...