首页 / 浏览问题 / 三维 / 问题详情
分屏显示的图层控制API只在部分图层上有效?
6月28日, 2020

s3mLayer里的setVisibleInViewport方法只在部分s3mlayer里有效是什么原因,iserver发的服务设置都是一样的,但是3个三维场景服务中只有一个能使用setVisibleInViewport控制在分屏里的显示情况是什么原因?

1个回答

您好,请问您的三个场景都使用了什么类型的数据?能使用setVisibleInViewport的缓存是什么数据,缓存是如何生成的;不能使用的数据情况又是如何?
jjz  (4,720分)  名扬四海
6月28日, 2020
使用了UDBX数据源的矢量数据,缓存是通过点击右键生成的三维缓存,格式是s3m.三个场景用的都是相同的方式生成的。不知道为什么有的不能用setVisibleInViewport控制在viewport的显示

您好,请问是模型或者其他三维数据吗,矢量数据一般无法生成三维缓存。具体想实现的效果是控制什么模型的显隐?例如建筑物、地形、管线或者其他模型。方便的话您的代码是如何实现的?

示例程序:http://support.supermap.com.cn:8090/iserver/iClient/for3D/webgl/zh/examples/editor.html#multiViewport

下面这个iserver场景服务下的显示的图层信息

三维图层信息:

  • 图层名称:xx@矢量数据
  • 图层类型:OSGBLayer
  • 图层标题:xx@矢量数据
  • 最大可见高度:0.0
  • 最小可见高度:0.0
  • 三维图层中对象的可见距离:0.0
  • 图层是否始终渲染:true

代码实现就和官方示例差不多核心实现就是viewer.scene.layers.find("xx@矢量数据").setVisibleInViewport(0,true).但是只能对某个场景下的图层有效,但是三个场景的图层信息都差不多。

您好,运行的时候是否有报错,官网的分屏示例加载有问题吗,可以把您的服务加载到示例程序里运行一下。setVisibleInViewport(index)中的index您都是设置的0吗,可以修改成1看看有没有变化,可以参考API看看是否为正确的索引。

参考链接:

http://support.supermap.com.cn:8090/iserver/iClient/for3D/webgl/zh/Build/Documentation/S3MTilesLayer.html?classFilter=s3mti#getVisibleInViewport

设置为其他也没变化,我也尝试过在你们的官方demo里加载我们的图层,依然还是无法控制。能否远程帮我看一下?
您好,请问官网本身的示例程序可以正确显隐吗?如果您的代码没有报错且示例程序可以正确运行,那应该是代码还需要修改,远程也是一样的步骤,需要您对照示例修改代码。
...