Jak sprawić by funkcja nie wywoływała się kilka razy ?

0

Mam mapke googla i pole do wpisania adresu jak sobie go wpisze wyświetla mi się punkt na mapce.
Następnie jest Listener i jak klikne w ten punkt to pojawia mi się komuniakat ALERT 43.
Teraz wpisuje inny adres i pojawia mi się inny punkt w który jak klikne to ALERT 43 wyświetla się dwa razy.
I tak kolejny raz i kolejny raz. Ja trzebuje tak zrobić by zawsze alert wyświetlał się tylko raz z ostatnio wpisaną pozycją.
To jak to zrobić bo już nie daję rady tego ogarnąć.

function searchAddress(valAddress) {
		pointer.setMap(null);
			
		geokoder.geocode({address: valAddress}, function(wyniki, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				map.setCenter(wyniki[0].geometry.location);
				map.setZoom(16);
				pointer.setPosition(wyniki[0].geometry.location);
				pointer.setMap(map);
			} else {
				alert("Nie znalazłem podanego adresu!");
			}
		});
		
		google.maps.event.addListener(pointer,'click',function() {
			alert(43);
		});
	}
0

jak byś dał do wglądu cały kod, bo mnie się wydaję że globalnie dodajesz alert(43); dla każdego eventu.

0

addListener dodaje funkcję do zdarzenia z naciskiem na dodaje (nie zastępuje)
w ten sposób po drugim wywołaniu funkcji na zdarzenie zareagują dwie funkcje (choć jednakowe), po drugim trzy itp.

rozwiązaniem jest dodanie listenera tylko raz - czyli po prostu wyrzuć

		google.maps.event.addListener(pointer,'click',function() {
			alert(43);
		});

poza tą funkcję
ostatnio wpisaną pozycję po prostu zapamiętaj jako zmienną dostępną w zakresie widzianym w miejscu utworzenia funkcji i funkcji searchAddress (najprościej całkiem globalna)

1 użytkowników online, w tym zalogowanych: 0, gości: 1