supermap webgl小点

1.点击选中。
2.scenc中的太阳和月亮。
3.模型部分部位换颜色
4.webgl广告牌让图标,不随地图放大一起变化
5.点击获取模型
6.点击模型,点击处弹出位置显示信息

7.取消选择框,实体画面时,选中面,选中框会飘。
8.用了camera.lookat后,把相机的模式切换回来

1.点击选中。

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

        //设置鼠标左键单击回调事件
        handler.setInputAction(function (e) {

            var s3mlayerPick = getSelection();
            

        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
        
        //返回选中对象
        var getSelection = function() {
            var layers = scene.layers._layers.values;
            var layerCount = layers.length;
            if(layerCount > 0) {
                for(var i = 0; i < layerCount; i++) {
                    var ids = layers[i].getSelection();
                    console.log(ids)

                    if(ids[0] !== undefined) {
                        var Selection3D = {};
                        Selection3D["layer"] = layers[i];
                        Selection3D["ID"] = ids[0];
                        return Selection3D;
                    }
                }
                return undefined;
            } else {
                return undefined;
            }
        };

2.scenc中的太阳和月亮。

scene.moon.show = false;

3.模型部分部位换颜色

 var ids = new Cesium.AssociativeArray();
                                        ids.set(viewer.selectedEntity.id, Cesium.Color.RED);
                                        console.log(ids);
                                        
                                        layer2 = viewer.scene.layers.getSelectedLayer();
                                        layer2.updateObjsColor(ids);

update只是更新当前的渲染效果,再次刷新后就没了,建议用set吧

4.webgl广告牌让图标,不随地图放大一起变化
entity billboard
在这里插入图片描述
在这里插入图片描述
5.点击获取模型:

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

        //设置鼠标左键单击回调事件
        handler.setInputAction(function (e) {

            var s3mlayerPick = getSelection();
            

        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
        
        //返回选中对象
        var getSelection = function() {
            var layers = scene.layers._layers.values;
            var layerCount = layers.length;
            if(layerCount > 0) {
                for(var i = 0; i < layerCount; i++) {
                    var ids = layers[i].getSelection();
                    console.log(ids)

                    if(ids[0] !== undefined) {
                        var Selection3D = {};
                        Selection3D["layer"] = layers[i];
                        Selection3D["ID"] = ids[0];
                        return Selection3D;
                    }
                }
                return undefined;
            } else {
                return undefined;
            }
        };

点击后去遍历所有图层,拿到点击的模型id和所在的图层,(判断图层和id是不是想要的模型)在去做sql查询,拿到属性信息。

6.点击模型,点击处弹出位置显示信息

 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);

7.取消选择框,实体画面时,选中面,选中框会飘。

viewer.selectionIndicator = false

8.用了camera.lookat后,怎么把相机的模式切换回来

viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值