首页 / 浏览问题 / 三维GIS / 问题详情
如何通过界面调整S3M倾斜模型的位置。
19EXP 才疏学浅 2023年01月24日

使用产品:SuperMap iClient3D for WebGL   操作系统:win10 x64
数据类型: s3m倾斜摄影数据
问题详细描述:我这里有个设计界面,能否通过调整界面上的经纬度和旋转参数,动态改变s3m倾斜模型的位置。
问题重现步骤:1、 通过viewer.scene.addS3MTilesLayerByScp()加载一个s3m倾斜模型 2、点击界面上经纬度,修改经纬度参数 3、三维场景内的s3m倾斜摄影模型位置随之改变。

界面如下:

1个回答

您好,想要前端改变倾斜模型的位置,有以下几种方法可以实现:

1.可以使用实体的方式添加模型
viewer.entities.add({
      id: "test",
      position: Cesium.Cartesian3.fromDegrees(101.80089882736969, 26.60700234866561, 200),
      model: {
            uri: 'data/Cesium_Air.gltf'
             }
});

2.以实例化的方式添加模型
使用接口S3MInstanceCollection,在添加模型时,将界面填入的坐标位置和旋转参数传入,即可实现动态添加模型。
具体的参数说明可以参考我们相关博客:https://blog.csdn.net/supermapsupport/article/details/97913355

3.直接修改图层的坐标信息比如
 layer.lat = 38.12115876850175;  //纬度
 layer.lon = 117.04856986486317;  //经度
 layer.height = 100;    //高度
 layer.LoadingPriority = 2;    //设置加载的优先级模式为层优先加载模式
 layer.refresh();

如果您倾斜数据不是单个s3m模型,比较大,用方法1和方法2可能添加不全,性能不是很理想,建议您那边使用方法3;如果是单个小模型,您可以选择上述三种方法的一种来进行修改模型坐标。
gsh
490EXP 锋芒毕露 2023年01月28日
我对您给出的答案研究了一下,还有点问题想请教下。我这边的服务是s3m的缓存地址,这样的服务地址不能添加嘛?地址:http://39.170.82.136:8090/iserver/services/3D-yzcdywngx/rest/realspace/datas/Config/config 。

修改S3MTilesLayer位置可以通过修改其属性来实现,参考以下代码:

注意需要设置加载模式为层优先加载模式。

你提供的服务地址是通过iserver 9D发布的,倾斜入库应该也是早期版本进行的,所以用这个更改位置有问题,使用新版iserver与iDesktop处理倾斜的话,是可以改的。

...