2014-01-17 81 views
0

我创建了一个弹出框。当我单击谷歌地图上的标记。弹出窗口显示一个取消按钮。点击取消按钮只是隐藏这个弹出框。我的问题是,当我双击这个标记的弹出框正在生成和重叠一个。所以取消不工作。如何避免这种情况?如何避免双击谷歌地图中的标记?

示例代码:

makeInfoWindowEvent(map, marker); 

function makeInfoWindowEvent(map, marker) { 
    google.maps.event.addListener(marker, 'click', function() { 

     var markerPopup = document.createElement("div"); 
     markerPopup.id = 'markerPopup'; 
     markerPopup.className = 'markerPopup'; 
     markerPopup.innerHTML = "This is a test message"; 

     var cancel = document.createElement("div"); 
     cancel.id = 'cancel'; 
     cancel.className = 'cancel'; 

     markerPopup.appendChild(cancel); 
     cancel.onclick= function() { 
      var divbg = document.getElementById('markerPopup'); 
      divbg.style.visibility = "hidden";   
     } 
     document.getElementById('map-canvas').appendChild(markerPopup); 

    }); 
} 
+0

你只想在地图上一次只有一个标记吗? – Bic

回答

0

事件将不会触发在同一时间,所以你可以检查一个markerPopup的存在并提前返回,如果它已经存在。

if (document.getElementById("markerPopup")) { 
    // they must have double clicked, so do nothing 
    return; 
} 

如果您一次需要在地图上有多个弹出窗口,那么您需要为每个创建的窗口分配唯一的ID。然后,您可以将这些ID作为属性附加到该按钮上,以便知道哪一个要杀死。