Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript zoomBox时也会触发map.on(';单击';,onClick)_Javascript_Leaflet - Fatal编程技术网

Javascript zoomBox时也会触发map.on(';单击';,onClick)

Javascript zoomBox时也会触发map.on(';单击';,onClick),javascript,leaflet,Javascript,Leaflet,我已经定义了一个map.on('click',onClick)事件,但当有人使用zoomBox处理程序(Shift+draw zoom box)时,它也会触发 e.type始终为“单击” 我正在使用传单版本0.5.1 我怎样才能避免这种情况 提前谢谢我想你发现了一个bug!我发现这个bug只出现在IE10中,而且不仅是0.5.1,而且0.6也有同样的问题。你可以去 现在,您可以临时跟踪mousedown点,并与单击点进行比较,以确定光标是否移动 var mousedownPoint; // gl

我已经定义了一个
map.on('click',onClick)
事件,但当有人使用zoomBox处理程序(Shift+draw zoom box)时,它也会触发

e.type
始终为“单击”

我正在使用传单版本0.5.1

我怎样才能避免这种情况


提前谢谢

我想你发现了一个bug!我发现这个bug只出现在IE10中,而且不仅是0.5.1,而且0.6也有同样的问题。你可以去

现在,您可以临时跟踪
mousedown
点,并与
单击点进行比较,以确定光标是否移动

var mousedownPoint; // global

map.on('mousedown', function (e) {
  mousedownPoint = e.containerPoint;
});

map.on('click', function (e) {
  if (!e.containerPoint.equals(mousedownPoint)) {
    return;
  }

  // DO WHAT YOU WANT
});

你能把它改成使用mousedown和mouseup吗?然后让它们都编辑一个变量,计算出向下和向上之间的时间,如果时间不太长,启动click函数?如果这有道理的话,我想问题在于点击是通过zoomBox处理程序的。尝试将单击侦听器添加到缩放处理程序并添加StopRopagation()。使用jQuery:$('#zoombox')。在('click',函数(e){e.stopPropagation()})上;我上面的回答应该是可行的,但这有点像黑客,因为这种行为在通过控制台添加click事件后不会发生。您是否可能以某种方式更改了“map”变量以引用包含的div而不是map元素本身?你有到JSFIDLE的链接吗?@SmokeyPHP有太多的依赖性……这太棒了!但是要使用equals函数,您必须传递一个latlng作为参数,因此代码(已测试)的工作方式如下所示。在我看来,这个bug也出现在Firebug和Chrome的最新版本中。var mousedownPoint;//全局映射.on('mousedown',函数(e){mousedownPoint=e.latlng;});map.on('click',函数(e){if(!e.latlng.equals(mousedownPoint)){return;}//做你想做的事});
var mousedownPoint; // global

map.on('mousedown', function (e) {
  mousedownPoint = e.containerPoint;
});

map.on('click', function (e) {
  if (!e.containerPoint.equals(mousedownPoint)) {
    return;
  }

  // DO WHAT YOU WANT
});