地图平移时避免自定义叠加点击事件(谷歌地图 API)

chr*_*r85 1 javascript google-maps overlay onclick panning

与此问题相关:“使自定义叠加层可点击(Google Maps API 3)”并与我在同一问题中的评论相关(张贴在这里是为了提高可见性,因为我认为是其他问题)。

我已经click为我的叠加多边形添加了一个侦听器,但是现在我遇到的问题是,当用户想要平移地图并单击叠加来执行此操作时,当释放鼠标按钮时,会触发单击事件。显然,onclick当我只想平移地图时,我不想执行该操作。这个问题有什么优雅的解决方案吗?

这是该问题的一个示例:panning/click issue

Bla*_*son 6

在此处查看此更新的小提琴:http : //jsfiddle.net/9gvsq3od/5/

基本上我添加了这个代码:

 var dragging = false;

 google.maps.event.addDomListener(this.path_, 'mousedown', function (evt) {
     dragging = false;
 });

 google.maps.event.addDomListener(this.path_, 'mousemove', function (evt) {
     dragging = true;
 });

 // onclick listener
 google.maps.event.addDomListener(this.path_, 'click', function (evt) {
     if (dragging) { return false;} 
     alert('clicked on path');
 });
Run Code Online (Sandbox Code Playgroud)

click 事件仅在释放鼠标按钮时触发,因此代码dragging在鼠标移动时将变量设置为 true。第一个mousedown手柄重置拖动变量,因为没有“鼠标停止”事件,我们需要在开始新交互时重置状态。