在平移地图时避免自定义叠加点击事件(google maps API)

时间:2014-12-16 12:16:32

标签: javascript google-maps onclick overlay panning

与此问题相关:'Make custom overlay clickable (Google Maps API 3)'并且在同一问题中也与我的comment相关(在此处发布以提供更多可见性,因为我认为是其他问题)。

我在叠加多边形中添加了一个click侦听器,但现在我遇到的问题是,当用户想要平移地图并点击叠加层来执行此操作时,释放鼠标按钮时,点击事件为触发。显然,当我想要平移地图时,我不想执行onclick操作。针对这个问题的任何优雅解决方案?

以下是此问题的示例:panning/click issue

1 个答案:

答案 0 :(得分:3)

点击此处更新的小提琴: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');
 });

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