2016-11-13 7 views
-2

Я пытаюсь выполнить нижеследующий щелчок (функция) только при первом щелчке, но он всегда выполняется каждый раз, когда я нажимаю на карту. Можно ли использовать One-Click с помощью кода ниже? Заранее спасибоВыполнение события только при первом нажатии

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

Добро пожаловать в StackOverflow! Пожалуйста, напишите [минимальный, полный и проверенный пример] (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

Спасибо большое .. Ваше решение также отлично поработало !!! –

Смежные вопросы