首页 / 浏览问题 / 三维GIS / 问题详情
3D WebGL右键后pick为什么没有返回?
91EXP 初出茅庐 2018年09月15日
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?

1个回答

加上这一行代码即可:

viewer.selectedEntity = f.id;
5,560EXP 登峰造极 2018年09月17日
我的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
...