首页 / 浏览问题 / WebGIS / 问题详情
select控件,右键回调函数不触发
8EXP 2021年05月27日
场景:标绘

绘制完多边形后,在多边形上右键,不弹出右键菜单,原因是select控件的rightclick回调函数没触发,如果绘制完移动或缩放地图,然后再多边形上右键,则可正常触发右键回调函数。请问是什么原因??

部分代码如下:

  // plot layer select control

  var callbacks = {

    rightclick: function (currentFeature) {

      createCustomMenu(currentFeature);

    },

    over: function (currentFeature) {

      // console.log('mouseover');

    },

    out: function (currentFeature) {

      // console.log('mouseout');

    }

  }

  _plotSelect = new SuperMap.Control.SelectFeature(

    [lineLayer, polygonLayer], {

    callbacks: callbacks,

    onSelect:function(){

      console.log(567)

    },

    onUnselect:function(){

      console.log(999)

    }

  });

// 加到地图

 map.addControl(_plotSelect);

//激活 - 激活是写在多边形绘制完成的回调函数中的

_plotSelect.active();

1个回答

您检查下代码中是不是因为右键的点击事件与浏览器的右键点击事件有冲突?或者是可以在第一次右键点击时添加监听事件判断是不是点击事件没有生效还是什么原因?
2,248EXP 2021年05月27日
首先感谢张老师的回答!

我的理解是:

1._plotSelect.active(); 激活select控件后,应该就禁用了浏览器默认的邮件菜单吧?

而且我发现:

不仅仅是callbacks对象中的rightclick事件不触发,我正在callbacks中添加的over,out事件也不触发

而且与callbacks并级的onSelect,unSelect事件也不会触发

(注:以上不触发,均指的是多边形绘制完后不触发,移动或缩放地图后,select监听的所有事件就都能正常触发了)

开始我怀疑是select没有激活,但是我debugger到激活代码,查看select控件的状态active是true.

我想如果能实现绘制多边形后就能选中该多边形对象,是不是可以解决这个问题,至少是一种折中的解决办法。

盼答复!甚感激!

或者supermap有没有开发一个方法,能够用代码触发(右键)事件的?类似jquery的功能

$('#btn').trigger("click");
...