首页 / 浏览问题 / 三维GIS / 问题详情
鼠标选中S3M图层,获取该图层的名称
5EXP 2022年03月01日

 var currentLayer = scene.layers.getSelectedLayer();

                console.log(currentLayer);  想用这两行代码实现鼠标点击图层 获取图层信息的功能。可是console始终是undefined.

1个回答

您好,

1.如果知道图层的名称,则可以使用viewer.scene.layers.find方法传入图层的名称,则可以返回图层。

2.如果知道图层的索引,则可以使用viewer.scene.layers.findByIndex方法传入图层的索引,返回图层。

3.如果需要获取有选中对象的那层s3m图层,则可以使用viewer.scene.layers.getSelectedLayer() 方法获取选中对象的那一层s3m图层。
4,151EXP 2022年03月01日
使用的就是第三种方法,控制台的打印结果始终是undefined.

当我的场景中有多个S3M图层,部分图层是在桌面端模型缓存后生成的scp文件发布的图层;部分图层是倾斜入库生成缓存后生成的scp文件发布的缓存。在js文件中,鼠标绑定viewer.scene.layers.getSelectedLayer(),点击模型缓存的图层,控制台不是undefined;点击倾斜入库的图层,就是undefined.
您好,您可以尝试直接根据索引或者名称去get这个S3M图层,如果能get到,看看这个图层selectEnabled 属性(是否能被选中)是false还是true
我是想根据点击这个图层,就能够获取这个图层的名称。

图层能否被选中和倾斜入库的缓存图层有关系吗?
您好,我的意思是您可以通过 直接根据索引或者名称去get这个S3M图层 ,然后获取它的 selectEnabled 属性,查看一下是否是因为这个属性的问题。

倾斜入库的缓存图层就是S3MTilesLayer图层的一种, 图层能否被选中和是否是倾斜入库的缓存图层 没有直接关系。
查看了属性,是为true。鼠标还是获取不了图层的名称。
那您在桌面入库的时候选择的是哪个版本的S3M呢,倾斜摄影的话推荐使用1.0版本的,2.0版本的有可能会出现您这个情况。
1.0版本。
您那边方便把您的倾斜数据给我一部分吗,原数据的1-2个Tile文件夹和它的xml文件即可。我这边测试一下。百度云网盘或者我的邮箱799685031@qq.com都可以
已发送,谢谢查看。
您好,请问测试有结果吗?
...