3D WebGL右键后pick为什么没有返回?

0 投票
handler.setInputAction((mvt) => {
    var f = viewer.scene.pick(mvt.position)
    var e = viewer.selectedEntity
    console.log("selected entity is ", e)
    console.log("selected feature is ", f)
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK)

上面是我的代码,我想右键的时候获取管井信息,我看图形上已经是选中状态,为什么打印出来是undefined?

9月 15, 2018 分类:  493次浏览 | 用户: techcave 初出茅庐 (82 分)
重新分类 9月 17, 2018 用户:程yan

1个回答

0 投票
 
已采纳
加上这一行代码即可:

viewer.selectedEntity = f.id;
9月 17, 2018 用户: 张阳名 登峰造极 (5,400 分)
采纳于 9月 17, 2018 用户:techcave
我的f也是undefined,pick出来就是undefined。
你点击的是什么对象?entity还是三位切片缓存?
三维切片缓存,s3m的
三维切片缓存的话,你要用

var layer = viewer.scene._layers._selectedLayer; 获取选择对象的图层,然后

var id = layer.getSelection(); 获取选择对象的id,

然后根据这个id到数据服务里去查询属性信息,详细参考sql查询示例。
这个id是smid吗,程序里面怎么判断是哪个dataset的?
你可以自行设置一个图层名与数据集名对应的字典,然后根据图层名去查数据集名。
handler2.setInputAction(function(e) {
        var layer = viewer.scene._layers._selectedLayer; //获取选择对象的图层,然后
        var id = layer.getSelection(); //获取选择对象的id,
        viewer.selectedEntity = id;
        pick = scene.pick(e.position);
        var position = scene.pickPosition(e.position);
为什么我这样写 pick还是undefined,id=103
...