首页 / 浏览问题 / 组件GIS / 问题详情
生成场景缓存进度问题
263EXP 2019年10月30日

利用java组件接口生成三维场景缓存,获取进度接口返回的值一直是100,请问如何获取正确的值?

            builder.addSteppedListener(new SteppedListener() {
                public void stepped(SteppedEvent event) {
                    cacheSrv.progress = event.getPercent();
                }
            });

1个回答

您好,请问一下您那边是怎么写呢?进度条是异步处理的,需要写在生成缓存builder.build之前,而不是之后执行
9,232EXP 2019年10月31日

这个进度事件监听,我是写在build之前的,然后用一个全局静态变量存储事件处理程序返回的进度值。然后我用一个定时器在实时打印这个全局静态变量,一直是100.

builder = new SceneCacheBuilder(scene, output.toString());
            builder.setCompressedTextureType(CompressedTextureType.DDS);//压缩方式,PC
            builder.setProcessThreadsCount(8);//处理线程
            builder.setStorageType(StorageType.Original);//存储方式,原始
            builder.setIsCalNormal(false);
            builder.setIsInstance(true);
            //2.1 设置需要生成缓存的普通图层和地形图层
            String[] layerNameArr = layerNames.toArray(new String[] {});
            builder.setOutputLayerNames(layerNameArr);//三维自定义图层
            builder.setOutputTerrainLayerNames(null);//地形图层不生成
            //2.2 场景和工作空间输出参数
            builder.setOutputSceneName("Scene");//设置新生成的场景名称
            Path path = Paths.get(output.toString(),workspaceName+ ".smwu");//*工作空间路径
            connInfo.setServer(path.toString());
            builder.setOutputWorkspaceConnectionInfo(connInfo);
            //2.3 开始生成缓存
            builder.addSteppedListener(new SteppedListener() {
                public void stepped(SteppedEvent event) {
                    cacheSrv.progress = event.getPercent();
                    //VectoringAndSignifying.step=event.getMessage();
                }
            });
            flag = builder.build();

您好,您那边使用的组件版本是哪一个版本呢?在进度条事件中直接输出一下System.out.println(event.getPercent());看一下返回值
java组件 10i
按照我上面说直接输出进度条的值,把输出信息截图看一下
...