首页 / 浏览问题 / 云GIS / 问题详情
iClient Classic使用获取layersID但无法显示
260EXP 2022年02月08日
使用SetLayerStatusService获得过滤后的layersID后,通过

roadLayer.params.layersID = setLayerServiceEventArgs.result.newResourceID;
roadLayer.redraw();

将过滤后的图层显示在地图上,但地图上缺无法显示出图层。

tileimage的url后半如下

tileImage.png?transparent=true&cacheEnabled=false&layersID=wwwn_8900_88f797206b3546fd99f1023d8f94dfbb&width=256&height=256&x=2&y=2&scale=-1&redirect=false&token=GoVg160IlqDr0DzGrzzHK_Qqyj7ezEQHNWVE93qL6oHsIlUbrOWHXMIBG2afhEDurCCkFo2phQL6ambrVM95OFIuqDAPxi8BcHpYoBe6RNWe5f7Gbip_O00rPY9Dj0RM&t=1644309334472&overlapDisplayed=false

正在怀疑是否跟scale=-1有关。

请问这种情况为什么会发生,要怎么解决

2 个回答

您好,您加载之后等待一会也没有出现图层嘛?控制台里报什么错呢?
341EXP 2022年02月09日
您好,控制台没有报错。

具体情况如下:想要显示桥梁图标图层时,通过

layerStatusTrue = new SuperMap.REST.LayerStatus({
                            layerName: roadLayer.LayersName2[i],
                            isVisible: true
                        });

设置桥梁图标图层显示为true,其他图层如果没被选中,isVisible就设置为false

然后打开地图,单击显示桥梁图标,点击后控制台没有报错,图标也没有显示。

但在这种情况下显示道路图层的话,就能带着桥梁图层一起显示出来,道路图层的LayerStatus设定如下:

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

道路和桥梁图标显示完后,重新刷新页面,再单独点击桥梁图标,可以在地图上正常显示

请问这是什么原因
您好,第一种可能是你还没有完全加载成功,所以他不显示。

第二种就可能是你桥梁的控制被道路的控制覆盖了,这边给您提供这样一个排查思路
您好,我代码里是遍历这个地图的每个图层,然后对每个图层设置LayerStatus,放到layerStatusList数组中,然后请求的图层情报

第一种可能的情况下,我这边能频繁确认到页面启动后点击桥梁图标图层无反应,继续点击其他图标图层也没反应,必须等到选择显示道路图层后才能一起出现,所以可以排除没有完全加载成功的可能。

第二种情况下,控制被覆盖了请问是什么情况下才会出现的问题,桥梁图标和道路的layerName是不一样的
必须选择显示道路图层才能一起出现?这样的话你的其他图层不就是必须等道路图层出现才能显示,您看看这个关于这个部分的设置是如何实现的
如果其他图层显示不了,必须选择显示道路图层才能一起出现,然后刷新页面后只选中其他图层时,可以正常显示。

这部分的设置我已经发在上面了

可以参考这个demo逐个图层看看能显示出来么?

https://blog.csdn.net/supermapsupport/article/details/52943780

20EXP 2022年02月10日
...