首页 / 浏览问题 / WebGIS / 问题详情
cesium展示S3M图层属性信息时有时没有
8EXP 2023年06月08日

我是用cesium加载的S3M缓存图层,也设置了每个S3M图层的indexedDBSetting.isAttributesSave为true,但是点击获取信息的时候却有时候能显示,有时候不能显示,不能显示的时候图层getAttributesById(id).then返回为null,这是什么情况呢?加载图层代码如下:

        let url = import.meta.env.VITE_ISERVER_URL + '3D-roadVector3DS3M/rest/realspace';
        var promise = scene.open(url, object.name, {
            autoSetView: true
        });
        Cesium.when.all(promise, async (layers) => {
            layers.map(item => {
                item.indexedDBSetting.isAttributesSave = true;
                item.hasLight = false;
            })
            mapLayer = [layers];
            if (!scene.pickPositionSupported) {
                alert('不支持深度纹理,无法拾取位置!');
            }
        },

获取属性信息代码如下:

    scene = viewer.scene;
    widget = viewer.cesiumWidget;
    let handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
    handler.setInputAction(function (movement) {
        mapLayer && mapLayer.map(item2 => {
            item2.map(item => {
                var selection = item.getSelection();
                if (selection && selection.length > 0) {
                    let id = Number(selection[0]);
                    let featuresPromise = item.getAttributesById(id);
                    featuresPromise.then(function (e) {
                        //创建弹出框信息
                        var entity = new Cesium.Entity({
                            name: "属性信息",
                            description: createDescription(e)
                        });
                        viewer.selectedEntity = entity;
                    })
                }
            })
        })
    }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

同一个地点,不同时间点击得出的结果为:

1个回答

您好,'不能显示的时候图层getAttributesById(id)返回为null'时,item和id是否都有值?

设置图层为可选试一下electEnabled =ture.
1,865EXP 2023年06月08日

还是无效,id和item都是有值的,,,我发现了,就是我点击了这个矢量,间隔几秒后,刷新页面重新点击该矢量,就又可以获取到属性了,,,你可以看上面两张结果的截图,同一条路,同一个矢量获取到了不同的结果,没有修改代码!

设置indexedDBSetting .isAttributesSave =true,是将模型属性保存在浏览器的indexedDB中的,所以只有indexedDB中存储到了才能通过getAttributesById查询到。查询模型属性,可以参考一下:https://blog.csdn.net/supermapsupport/article/details/124879325

你好,请教一下,一个工程文件中能发布多少个场景啊,我现在一个工程文件中发布了30多个场景了,这个有没有影像呢?
工作空间中没有对场景数量做限制。前端加载的是不同的场景服务,加载的是不同的资源,不会有影响。
你好,请问你的问题解决了吗,我这边也有这个现象
...