首页 / 浏览问题 / 云GIS / 问题详情
iClientClassic获取图层显示的服务能否设置缓存
258EXP 2022年02月07日
为了能够使用filter过滤图层内容,我使用了

layerStatusTrue = new SuperMap.REST.LayerStatus({
                            layerName: roadLayer.LayersName2[i],
                            isVisible: true,
                            displayFilter: "codes='" + RoadID + "'"
                        });

使用SuperMap.REST.LayerStatus设置图层情报,然后使用
            var setLayerStatusParameters = new SuperMap.REST.SetLayerStatusParameters({
                layerStatusList: layersStatus
            });
            var setLayerStatusService = new SuperMap.REST.SetLayerStatusService(roadUrl, {
                eventListeners: { "processCompleted": setLayerCompleted }
            });
            setLayerStatusService.processAsync(setLayerStatusParameters);

获取能够显示的内容,在地图上显示

但每次获取图层内容的时间略慢,请问有没有什么办法能够提高显示的速度,比如说用相同的条件检索时,使用缓存之类的

每次大约会设置200多个layerStatus

1个回答

SuperMap.REST.SetLayerStatusService无缓存属性,显示较慢的原因从代码看是每添加一次图层都需要进行一次添加监听事件的操作,并且采用的是异步处理的方式,可以优化下这块的代码提升性能
20EXP 2022年02月08日
您好,请问一下,200多个图层里有三四个需要进行sql的过滤,有没有什么办法,能够让SetLayerStatusService只过滤这三四个图层,然后其他图层用layersID = "[0,1,2]"这样去控制?
看你代码也是每个图层的layerStatus也是按照图层分别设置的,这三四个需要过滤的图层单独设置sql过滤条件,其他的不设置过滤条件,不就行了么?
请问,不设置过滤条件的意思就是,只设置LayerStatus里的layerName和isVisible,不设置displayFilter对吧。

如果是的话,现在就是代码
对,不设置过滤条件的意思就是,只设置LayerStatus里的layerName和isVisible,不设置displayFilter,现在代码怎么了?
抱歉,打错了,是“现在代码就是这样”

然后具体的现象就是上文所说的,可能是版本问题吗,我使用的iClientClassic版本是10.1.2
你说的现象是性能慢么?我私信你,加qq具体聊一下。
...