From 8eb642248fcacac3b287a4bad09da280f1de9113 Mon Sep 17 00:00:00 2001 From: Sphinxxxx Date: Wed, 13 Jul 2016 23:05:49 +0200 Subject: [PATCH] Fixes #87 Related to pull request #78 Because of an old bug (https://bugs.chromium.org/p/chromium/issues/detail?id=161464), Chrome raises a `mousemove` event with every `mousedown`. Therefore, we need to see if the mouse moves a little before we set the `isDragging` flag. --- src/markerclusterer.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/markerclusterer.js b/src/markerclusterer.js index 554fcec..2c681ba 100755 --- a/src/markerclusterer.js +++ b/src/markerclusterer.js @@ -1075,18 +1075,22 @@ ClusterIcon.prototype.onAdd = function() { panes.overlayMouseTarget.appendChild(this.div_); var that = this; - var isDragging = false; + var isDragging = false, + potentialDragStart; google.maps.event.addDomListener(this.div_, 'click', function(event) { // Only perform click when not preceded by a drag if (!isDragging) { that.triggerClusterClick(event); } }); - google.maps.event.addDomListener(this.div_, 'mousedown', function() { + google.maps.event.addDomListener(this.div_, 'mousedown', function(event) { isDragging = false; + potentialDragStart = [event.clientX, event.clientY]; }); - google.maps.event.addDomListener(this.div_, 'mousemove', function() { - isDragging = true; + google.maps.event.addDomListener(this.div_, 'mousemove', function(event) { + isDragging = isDragging || + potentialDragStart && (Math.abs(potentialDragStart[0] - event.clientX) + + Math.abs(potentialDragStart[1] - event.clientY)) > 4; }); };