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

Avoid custom overlay click event when map is panning (google maps API)

本文关键字:事件 谷歌地图 API 叠加 自定义 地图      更新时间:2023-09-26

与这个问题有关:"使自定义叠加可点击(谷歌地图API 3)",也与我在同一问题中的评论有关(发布在这里以使其更具可见性,因为我认为是其他问题)。

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

下面是问题的示例:平移/单击问题。

在这里查看这个更新的小提琴: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');
 });

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