与此问题相关:'Make custom overlay clickable (Google Maps API 3)'并且在同一问题中也与我的comment相关(在此处发布以提供更多可见性,因为我认为是其他问题)。
我在叠加多边形中添加了一个click
侦听器,但现在我遇到的问题是,当用户想要平移地图并点击叠加层来执行此操作时,释放鼠标按钮时,点击事件为触发。显然,当我想要平移地图时,我不想执行onclick
操作。针对这个问题的任何优雅解决方案?
以下是此问题的示例:panning/click issue。
答案 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”事件,我们需要在开始新的交互时重置状态。