首页 / 浏览问题 / 组件GIS / 问题详情
iobjects java 工作空间加载三维切片缓存发布问题
15EXP 2022年03月28日

我的代码如下:

先生成缓存然后工作空间新建场景scene添加图层layer 另存工作空间然后发布

用此方式发布的服务打开scenes 用WebGL3D方式浏览无法定位到模型(用idesktop查看发现模型是有的,但是无法自动定位到),如图

想问一下是我scene设置还是layer的问题?

能否直接打开就定位到模型 谢谢

1个回答

您好,由于无法确定您说的“自动定位”具体是指代:1. 打开三维场景自动定位到某个位置;2. 设置“快速定位到本图层”后三维场景无法定位。根据您的描述,有以下建议:

1. 使用 SuperMap iDesktop 加载您保存的工作空间后,打开对应的三维场景,双击缓存图层或鼠标右键点击缓存图层“快速定位到本图层”,验证一下能否将三维场景定位到缓存位置。若桌面能够定位,说明您保存的工作空间没有问题,只是在保存三维场景前没有给三维场景设置初始显示范围,通过Scene的ensureVisible方法进行三维场景显示范围设置即可。

2. 若通过 SuperMap iDesktop 桌面端也无法“快速定位到本图层”,建议您先将Java代码生成的三维切片缓存(*.scp)使用 SuperMap iDesktop 桌面端加载,浏览检查三维切片缓存生成结果是否正确。

3. 若上述操作都没有问题,有2种方式处理:

3.1. 通过3DWebGL的scene.camera.setView接口设置三维场景浏览范围;

3.2. 在Java代码添加新建的Scene到工作空间前,给Scene设置浏览范围。

希望可以帮到您。
2,253EXP 2022年03月29日

谢谢您的回答

我说的自动定位的意思就是在iserver用 WebGL3D形式浏览一打开就是模型,我现在是一打开就是我上面截图的位置找不到模型

您好,由于你的代码中创建Scene的时候没有设置初始浏览范围(默认是全球范围),所以在发布工作空间的时候通过 WebGL3D 形式浏览一打开就是全球场景。建议你在Java代码中先给Scene设置浏览范围(ensureVisible方法),保存后在iServer发布工作空间,这样通过 WebGL3D形式浏览一打开即可定位到您设置的浏览范围。若此时WebGL3D仍然无法显示您的三维缓存,有以下建议:

1. 使用SuperMap iDesktop桌面端加载您发布的iServer三维服务,检测是否可以正常显示三维缓存。若能够正常显示,则说明你生成发布的三维服务没有问题。

2. 可能是当前iServer的自带的WebGL3D内核版本较老的原因,建议你参考http://support.supermap.com.cn:8090/webgl/examples/webgl/examples.html#layer-S3M示例,新建WebGL3D项目加载您在iServer发布的三维缓存。

希望可以帮到您。

...