12
2019
04

Cesium entities 事件

一直好奇徐霞客作为伟大的旅行家,不做官、不经商、不卖文,带着仆人走遍20多个省,游记写了60多万字。那他旅游经费怎么来的?最近才知道他原来继承了祖上6000多亩地,收租子就花不完。

在多数应用场景中,我们不仅需要绘制出空间对象还需要用鼠标拾取对象,cesium为我们提供了scene.pick接口,如下代码实现坐标左键单击实现对象的拾取:

viewer.entities.add({

            id:'id',

            position: Cesium.Cartesian3.fromDegrees(103.0, 40.0),

            name: 'Red ellipse on surface with outline',

            ellipse: {

                semiMinorAxis: 250000.0,

                semiMajorAxis: 400000.0,

                height: 200000.0,

                extrudedHeight: 400000.0,

                fill: true,

                material: Cesium.Color.RED.withAlpha(0.5),

                outline: true, //必须设置height,否则ouline无法显示

                outlineColor: Cesium.Color.BLUE.withAlpha(0.5),

                outlineWidth: 10.0//windows系统下不能设置固定为1

            }

        });

 

        var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);

        handler.setInputAction(function (movement) {

            var pick = viewer.scene.pick(movement.position);

            if (Cesium.defined(pick) && (pick.id.id === 'id')) {

            

            }

        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

以上代码,在添加的entity中加入id唯一标识,然后利用ScreenSpaceEventHandler接口监听鼠标事件,在左键单击事件中,通过viewer.scene.pick获取点击出的对象,如果对象不为空且id匹配则说明选中。

« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。