首页 / 浏览问题 / 三维GIS / 问题详情
webgl事件删除
204EXP 2017年10月10日
例子中的位置拾取的事件如何删除

var handler = new Cesium.ScreenSpaceEventHandler(canvas);
    //设置鼠标左键单击回调事件
    handler.setInputAction(function(e) {
    //首先移除之前添加的点
    viewer.entities.removeAll();
    //获取点击位置笛卡尔坐标
    var position = scene.pickPosition(e.position);
    //将笛卡尔坐标转化为经纬度坐标
    var cartographic = Cesium.Cartographic.fromCartesian(position);
    var longitude = Cesium.Math.toDegrees(cartographic.longitude);
    var latitude = Cesium.Math.toDegrees(cartographic.latitude);
    var height = cartographic.height;
    if(height < 0) {
        height = 0;
    }
    //在点击位置添加对应点
    viewer.entities.add(new Cesium.Entity({
        point : new Cesium.PointGraphics({
        color : new Cesium.Color(1, 1, 0),
        pixelSize : 10,
        outlineColor : new Cesium.Color(0, 1, 1)
        }),
        position : Cesium.Cartesian3.fromDegrees(longitude, latitude , height + 0.5)
    }));
    var point = new Object();
    point.longitude = longitude;
    point.latitude = latitude;
    point.height = height;
    jsonPoint = JSON.stringify(point);
    alert(jsonPoint);
    }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

我用viewer.screenSpaceEventHandler.removeInputAction();失败请问应该如何删除事件

1个回答

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

    //设置鼠标左键单击回调事件
    handler.setInputAction(function(e) {
        //首先移除之前添加的点
        viewer.entities.removeAll();
        //获取点击位置笛卡尔坐标
        var position = scene.pickPosition(e.position);

        //将笛卡尔坐标转化为经纬度坐标
        var cartographic = Cesium.Cartographic.fromCartesian(position);
        var longitude = Cesium.Math.toDegrees(cartographic.longitude);
        var latitude = Cesium.Math.toDegrees(cartographic.latitude);
        var height = cartographic.height;
        if(height < 0) {
            height = 0;
        }

        //创建弹出框信息
        var entity = new Cesium.Entity({
            name : "位置信息",
            description : createDescription(Cesium, [longitude, latitude, height])
        });
        viewer.selectedEntity = entity;

        //在点击位置添加对应点
        viewer.entities.add(new Cesium.Entity({
            point : new Cesium.PointGraphics({
                color : new Cesium.Color(1, 1, 0),
                pixelSize : 10,
                outlineColor : new Cesium.Color(0, 1, 1)
            }),
            position : Cesium.Cartesian3.fromDegrees(longitude, latitude , height + 0.5)
        }));
    }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
    
    handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)

请参考一下,最后句代码就是删除事件的。

3,389EXP 2017年10月11日
...