首页 / 浏览问题 / 其他 / 问题详情
图层覆盖问题
1EXP 2017年03月21日
我现在有两个图层A B,A图层覆盖在B图层上面,A图层上的对象的事件会被触发,但是我是想让B图层在视觉上不被A图层上的对象遮挡住,但是项目又是要求触发的是A图层上的事件。我想知道怎么在触发A图层事件的情况下能让B覆盖在A上面

1个回答

你好,你的A、B图层分别是什么图层呢?
若是Vector图层,select控件关联图层用数组,传一个图层,然后 A B都用Canvas渲染
若是服务端图层,使用UTFGrid鼠标事件,不存在这个问题
毛瑞
1
1,780EXP 2017年03月21日
你好,AB都是vector图层的,我刚学supermap不是很清楚,能请你讲的更详细一些吗

SelectFeature注册Vector图层鼠标事件,它的构造函数里绑定关联图层的那个参数是个数组,类参考链接如下:

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

比如:

var selectFeature = new SuperMap.Control.SelectFeature([vectorLayer],
       {onSelect:onFeatureSelect,onUnselect:onUnFeatureSelect});


Vector图层渲染方式有多种,其中Canvas元素事件不会挡住事件传递,所以可以改Vector图层的渲染方式,类参考如下:
http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/apidoc/files/SuperMap/Layer/Vector-js.html#SuperMap.Layer.Vector.renderers
Vector图层构造函数第二个参数是个对象,文档的说明是此类及父类开放属性,在这个参数对象里写上

renderers: ["Canvas"]

即指定Vector图层值使用Canvas方式渲染(IE8及以下浏览器不支持HTML5 Canvas元素)

你好,我用canvas渲染方式后效果实现了,但是还是有几个问题没弄清楚

1在不支持canvas元素的浏览器下这个功能怎么实现,有没有方法能够在改变两个图层的上下关系的情况下又不会改变事件传递

2用了canvas后两个图层的事件都可以触发,但是我并不想让B图层上的feature对象被选择到(就是鼠标碰到这个feature对象时指针的样式会变化,提示用户这个地方可以点击,但事实上我并没有给这个feature做任何的点击事件),这种情况下我要怎么做
Vector图层上的要素Canvas渲染鼠标hover默认会改鼠标样式,但是并不会触发事件,两办法
最简单的,B图层换成Canvas2,A还是Canvas,另外就是用要素鼠标事件去改图层dom上的鼠标样式了
不支持Canvas元素的浏览器就难受了,我试了下,非要B在上只点击A图层不行
...