首页 / 浏览问题 / WebGIS / 问题详情
获取不到symbolLibManager数组
25EXP 2023年11月08日
const viewer: any = initViewer(); const plottingLayer: any = new Cesium.PlottingLayer(viewer.scene, "plottingLayer"); viewer.scene.plotLayers.add(plottingLayer); const serverUrl = "http://support.supermap.com.cn:8090/iserver/services/plot-jingyong/rest/plot"; const plotting: any = Cesium.Plotting.getInstance(serverUrl, viewer.scene); const plotEditControl: any = new Cesium.PlotEditControl(viewer.scene, plottingLayer); plotEditControl.activate(); const plotDrawControl: any = new Cesium.PlotDrawControl(viewer.scene, plottingLayer); plotDrawControl.drawControlEndEvent.addEventListener(function () { //标绘结束,激活编辑控件 plotEditControl.activate(); }); const symbolLibManager = plotting.getSymbolLibManager(); //这里获取的symbolLibManager 数组为空 const commStore = useCommStore(); commStore.changeEditId(id); 这段代码获取标号库管理器对象,但是拿到的数组缺是空数组,是哪里有问题呢?

1个回答

您好,这里值得注意的是 symbolLibManager 有一个初始化的过程,所以请进行以下代码调整:


        const symbolLibManager = plotting.getSymbolLibManager();

        // 判断是否初始化完毕
        if(symbolLibManager.isInitializeOK()){
           showSymbolLibInfo();// 在这里继续您的代码
        } else {
            symbolLibManager.initializecompleted.addEventListener(function (result) {
                if(result.libIDs.length !== 0){
                    showSymbolLibInfo();// 在这里继续您的代码
                }
            });
            symbolLibManager.initializeAsync();
        }

更多内容请参考:http://support.supermap.com.cn:8090/webgl/Cesium/examples/webgl/editor.html#plot_loadSymbolLib (您可以点击页面右下角 源码按钮,查看实例源码)

希望能帮到您

310EXP 2023年11月09日
...