首页 / 浏览问题 / 移动GIS / 问题详情
Android 三维场景绘制的标注功能
29EXP 2022年01月11日

我将示例中这一部分内容

替换成了以下内容,想实现画线画面后,具体数值显示在线段旁边

class MeasureHandler extends Handler {
        TextPart3D textPart3D = new TextPart3D();

        @Override
        public void handleMessage(Message msg) {

            TextStyle textStyle = new TextStyle();
            textStyle.setAlignment(TextAlignment.MIDDLECENTER);
            textStyle.setFontScale(2);

            GeoText3D geoText3D = new GeoText3D(textPart3D);
            GeoPlacemark geoPlacemark = new GeoPlacemark("3D",geoText3D);
            sceneControl.getScene().getTrackingLayer().add(geoPlacemark,"geoText");

    //        textPart3D.dispose();
    //        geoText3D.dispose();

            if(AnalysisTypeArea == 0){
                double msgLength = Math.round(msg.getData().getDouble("length"));
                if (msgLength < 1000){
                    textPart3D.setText("共" + msgLength + "米");
                }else {
                    textPart3D.setText(" 共 " + Math.round(msgLength / 1000) + "公里");
                }

            } else if (AnalysisTypeArea == 1) {
                double msgLength = Math.round(msg.getData().getDouble("Area"));
                if (msgLength < 1000) {
                    textPart3D.setText(" 共 " + msgLength + " 平方米");
                } else {
                    textPart3D.setText(" 共 " + Math.round(msgLength / 1000) + "平方公里");
                }
            }
        }
    }

但是运行后画线画面没有显示,想问一下是哪里有问题

1个回答

您好,您那边看下具体不显示是否有报错信息呢?看了下你的代码您那边只是初始化了一个TextPart3D,但是并没有给他赋值,这个文本肯定是显示不了的。如果你要显示文本,你可以在量算结果后去构造TextPart3D,再添加到跟踪图层
9,127EXP 2022年01月12日

我试着修改之后报这种错误,和这个有关系吗

E/OGRE: OGRE EXCEPTION(3:RenderingAPIException): Fragment Program OsgbShadowVolumeSelectionFp.glsl&SELECTION failed to compile. See compile log above for details. in GLSLESProgram::compile at /run/media/root/988a9695-129a-4f6c-8fb9-04f13bc0968e/df/map/software/SourceCode/Android64/jni/LibShared/OGRE1.9_ES3/RenderSystems/GLES2/src/GLSLES/src/OgreGLSLESProgram.cpp (line 271)

跟这个报错应该是没有关系的,您那边试着调试一下代码和我们的demo,看下你哪里写错了
...