2016-11-13 42 views
-2

我试图只在第一次点击时执行下面的点击(功能),但它总是在我点击地图时执行。 是否可以使用下面的代码一键式?在此先感谢仅在第一次点击时执行事件

var placedMarkers = 0; 
var availableMarkersToPlace = 1; 
setTimeout(function(){ 
    if(placedMarkers >= availableMarkersToPlace) 
     return; 
    placedMarkers++; 
    var map = Appery("google_map").gmap; 
    google.maps.event.addListener(map, 'click', function(event) { 
     localStorage.setItem('selectedLat', event.latLng.lat()); 
localStorage.setItem('selectedLng', event.latLng.lng()); 
     placeMarker(event.latLng,map); 
     alert(event.latLng); 
    }); 

}, 1000); 
+0

欢迎计算器!请发布[最小化,完整和可验证示例](http://stackoverflow.com/help/mcve),以便我们可以为您提供帮助。 我不是一个JS家伙,但我会继续为它添加一个布尔开关。 –

回答

0

只需创建标志值,这将决定,运行功能或跳过:

var placedMarkers = 0; 
var availableMarkersToPlace = 1; 
var clicked = false; 

setTimeout(function(){ 
    if(placedMarkers >= availableMarkersToPlace) 
     return; 
    placedMarkers++; 
    var map = Appery("google_map").gmap; 
    google.maps.event.addListener(map, 'click', function(event) { 
     if(!clicked) { 
      clicked = true; 
      localStorage.setItem('selectedLat', event.latLng.lat()); 
      localStorage.setItem('selectedLng', event.latLng.lng()); 
      placeMarker(event.latLng,map); 
      alert(event.latLng);    
     } 

    }); 

}, 1000); 
+0

对不起,但我并不擅长Javascript。这个标志值如何符合我上面的代码? –

+0

我只是想告诉你主要的想法,但是。我更新了代码 – br3t

+0

非常感谢你..它工作得很好! –

1

使用addListenerOnce

google.maps.event.addListenerOnce(map, 'click', function(event) { 
    localStorage.setItem('selectedLat', event.latLng.lat()); 
    localStorage.setItem('selectedLng', event.latLng.lng()); 
    placeMarker(event.latLng,map); 
    alert(event.latLng); 
}); 
+0

非常感谢..您的解决方案也很棒! –

相关问题