图层叠加的问题

0 投票
两个图层A和B,显示的时候B在A的下面,然后设置B的层级在A之上,A就不能点击了,怎么办?
4月 5, 2017 分类:  1427次浏览 | 用户: windDawn 初出茅庐 (58 分)
重新分类 4月 5, 2017 用户:程yan

2 个回答

0 投票
您好!请问能否更具体的讲述一下您的问题?A图层和B图层分别为什么图层?其中显示的是什么种类的数据集?应用场景是怎样的?我们好进一步的为您解决问题。
4月 5, 2017 用户: 程yan 名扬四海 (1,655 分)

A是polygon,B是扇形,用的selectFeature控件

您好!如果您的A图层中不只一个对象的话,请在声明select方法时在A图层添加中括号:

select = new SuperMap.Control.SelectFeature([A], {onSelect: onFeatureSelect, onUnselect: onFeatureUnselect});

而且selectfeature只能同一时间选定一个矢量图层。

另外请在添加图层之后用activate()方法激活SelectFeature方法。

csm.mapContainer.addLayers(polygonLayerArray);
    //实例化 selectFeature 控件,调用了 onSelect 和 onUnselect 方法
    //地物被选中时调用 onSelect 方法,地物被取消选中时调用 onUnselect 方法
    var selectFeature = new SuperMap.Control.SelectFeature(polygonLayerArray, {
        onSelect: onFeatureSelected
    });
    //map上添加控件
    selectFeature.repeat = true;
    csm.mapContainer.addControl(selectFeature);
    //激活控件
    selectFeature.activate();

  //得到区域图层集合中最后一个图层在地图上层级的级数
    var areaLayerIndex = csm.mapContainer.getLayerIndex(polygonLayerArray[polygonLayerArray.length - 1]);
    //将扇形的图层放到区域图层的最上面,因为不然总被区域的图层盖住
    csm.mapContainer.setLayerIndex(semiCircleLayer, areaLayerIndex);

  var selectFeature = new SuperMap.Control.SelectFeature([polygonLayerArray], {
        onSelect: onFeatureSelected,onUnselect: onFeatureUnselect
    });

您这里需要给polygonLayerArray添加一个中括号并且添加onUnselect的方法即可。

您也可以通过查看类参考获取更多:

http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/apidoc/files/SuperMap/Control/SelectFeature-js.html

没用啊,我这个polygonLayerArray本来就是一个数组
您可否把您的onSelect和 onUnselect 方法回复至下方,我好进一步分析。
0 投票
您好!我先确定一下这两个问题:

1、图层A和B分别是什么类型的图层?

2、对图层A的点击事件是通过什么方式实现的?
4月 5, 2017 用户: 李晓 学富五车 (633 分)

A是polygon,B是扇形,用的selectFeature控件

您好,我看了一下A和B都是矢量图层,B在A之下要想实现点击B图层,要注意两点:

1、selectFeature里面添加数组的时候,给图层B加个中括号

2、selectFeature激活必须放在图层添加之后

csm.mapContainer.addLayers(polygonLayerArray);
    //实例化 selectFeature 控件,调用了 onSelect 和 onUnselect 方法
    //地物被选中时调用 onSelect 方法,地物被取消选中时调用 onUnselect 方法
    var selectFeature = new SuperMap.Control.SelectFeature(polygonLayerArray, {
        onSelect: onFeatureSelected
    });
    //map上添加控件
    selectFeature.repeat = true;
    csm.mapContainer.addControl(selectFeature);
    //激活控件
    selectFeature.activate();

  //得到区域图层集合中最后一个图层在地图上层级的级数
    var areaLayerIndex = csm.mapContainer.getLayerIndex(polygonLayerArray[polygonLayerArray.length - 1]);
    //将扇形的图层放到区域图层的最上面,因为不然总被区域的图层盖住
    csm.mapContainer.setLayerIndex(semiCircleLayer, areaLayerIndex);
我这个扇形图层只需要显示出来,不需要单击
你好! selectFeature里面添加数组的时候,只给图层B加个中括号 ,不添加图层A,这个方式A图层是不会响应 onFeatureSelect事件的,只是图层B响应该事件
不好意思,我可能把A和B弄反了,我以为A是扇形,但是意思是一样的,要想点击下面的图层, selectFeature里面添加这个图层的时候,就只给这个图层加个中括号 ;只不过这个有个弊端,在selectFeature激活的时候,层级在下面的图层会感觉显示在上面,因为selectFeature激活后会添加了一个透明的图层在最上面,会把selectFeature里面添加的图层的要素绘制在这个透明的图层里,所以会感觉在下面的图层还是显示在最上面!
...