如何在鼠标MouseMove事件中拿到矢量生成的模型数据集?

0 投票
如何MouseMove事件中拿到矢量生成的模型数据集?

我使用矢量数据生成了模型数据集,缓存以后,发布到iServer。

我想在鼠标移动的时候,移动到某一个模型数据集以后,改变改模型的颜色,而不是通过点击事件来查询,请问这可以实现吗?
12月 27, 2020 分类:  54次浏览 | 用户: mcradytien 初出茅庐 (35 分)

2 个回答

0 投票
 
已采纳
获取屏幕坐标,MOUSE_MOVE的时候传入viewer.scene.pick()。

var screenSpaceEventHandler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
            screenSpaceEventHandler.setInputAction(function(movement) {
                //最后的屏幕坐标
                var haveEn = viewer.scene.pick(movement.endPosition);
                        if(viewer.scene.pickPositionSupported && Cesium.defined(haveEn) && haveEn.id !== ' '){
                            clearAlpha();
                            if(haveEn.id.polygon !== undefined){
                               var haveEnsNow = haveEn.id.polygon._material._color.getValue();
                               haveEnsNow.alpha = 1;
                               haveEn.id.polygon._material._color.setValue(haveEnsNow);
                            }
                        }else if(haveEn == undefined){
                            clearAlpha();
                        }
                
            }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
            function clearAlpha(){
                        for(var i=0;i<viewer.entities.values.length;i++){
                            if(viewer.entities.values[i].name == "yanse"){
                                var haveEnsLast=viewer.entities.values[i]._polygon._material._color.getValue();
                                haveEnsLast.alpha = 0.2;
                                viewer.entities.values[i]._polygon._material._color.setValue(haveEnsLast)
                            }
                        }
                    }
12月 28, 2020 用户: 卷饼先生 名扬四海 (2,182 分)
采纳于 12月 28, 2020 用户:mcradytien
你这个方法只能 pick 到 entity吧 ?可以拿到 s3m 单个对象 ?

可以拿到,您可以拿这段代码结合范例http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#offset参考一下

你好,谢谢,这个貌似只能响应 Left_Click 事件,如果我将 left_click 改到 mouse_move 就无法执行高亮操作了。
方便的话留个联系方式,我给您发下效果视频
QQ 106559363
方便发一下您实现的效果吗?感谢!
我这边已经添加您了,您还没同意
咦,我没收到消息嘞
已添加,已解决
0 投票
你好,你可以使用鼠标移动事件

handler.setInputAction(function(e) {
       //需要进行的操作
    }, Cesium.ScreenSpaceEventType.MOUSE_MOVE );
12月 28, 2020 用户: weizhonrun 名扬四海 (1,037 分)
mouse_move 监听我知道,我想说的是是否可以通过 mouse——move 监听获取到 s3m 对象?比如一个 矢量面拉伸的盒子?
...