首页 / 浏览问题 / 三维GIS / 问题详情
cesium1.117拾取不到iserver发布的倾斜摄影模型服务对象
2EXP 2024年11月19日

viewer.scene.open('http://www.supermapol.com/realspace/services/3D-jinjiang/rest/realspace')
		var handle = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
		handle.setInputAction(function (movement: any) {
			var pickedFeature = viewer.scene.drillPick(movement.position);
			console.log(1,pickedFeature)
		
		}, Cesium.ScreenSpaceEventType.RIGHT_CLICK)

获取鼠标点击位置的坐标和高度信息功能,从b3dm的3dtile服务应用到iserver服务时,drillPick拾取不到对象,是空的数组,pick拾取返回的则是undefined,这是什么问题呢?或者说应该怎么拾取iserver的服务对象

1个回答

您好,scene.open()是加载超图s3m服务的方法,获取s3m图层中的模型对象可使用scene.pick()方法;原生Cesium目前还不支持加载超图iServer发布的3Dtiles服务,需要使用原生接口去加载,然后通过scene.pick或者scene.drillPick去获取对象
9,232EXP 2024年11月19日

用的是贵公司实施人员提供的这个,应该是SuperMap3D.js内重写的Cesium方法,切换Cesium版本一样获取不到

您好,针对超图s3m图层,可通过scene.open打开场景,并通过scene.pick获取对象,如下图;针对3dtiles服务,请使用原生Ceisum方式去加载获取对象

您好,用了这个cbd的服务(https://www.supermapol.com/realspace/services/3D-CBD/rest/realspace)确实可以拾取到无论是pick还是drillPick,但是类似倾斜摄影模型的就不行,例如贵公司的jinjiang这个服务(https://www.supermapol.com/realspace/services/3D-jinjiang/rest/realspace

倾斜摄影数据在没有做物理单体化的情况下,他是一张连续的TIn三角网,他没有单体的概念,你可以理解他是一张带有高程的影像,是不可点击和获取对象的,这类数据在超图s3m格式中或者3dtiles格式中都是一样的。我们对倾斜摄影数据做单体查询,是通过鼠标点击做空间查询,将倾斜摄影数据配套的矢量面数据返回叠加在倾斜摄影上高亮显示,并返回面的属性信息
感谢您的解答,主要也不是想要单体化,因为单体化我用的是矢量叠加的方式做的,想拿到点击的倾斜摄影模型是因为原先基于3dtile做的那种量测工具、选中模型调透明度、压平、裁切等功能要往这边迁移的。还有就是想问下有适配高版本cesium的SuperMap.js么可以给我一份么,因为我刚试了下好像我的SuperMap.js方法覆盖不全,比如像Cesium.when(l,function(layer:ant){})和类似layer = scene.layers.find('srsb');这个方法cesium1.117版本就不行,切到cesium1.86就可以了。
倾斜不可选,因此获取不到对象,您可以先scene.layers.find()获取图层,然后对图层进行透明度等操作。目前github上是最新的Cesium插件,至于您提到的这几个功能不可用,我给你反馈一下
...