/ / Como impedir a propagação de eventos do closeclick do Google Maps - javascript, google-maps, infowindow

Como impedir a propagação de eventos do tipo "clique no botão" do Google Maps - javascript, google-maps, infowindow

eu tenho um click evento ligado a um elemento que contém umGoogle Map. Quando o usuário fecha uma InfoWindow no mapa clicando na cruz, o evento click é acionado e propagado por todo o DOM. Eu quero parar essa propagação de eventos, então o infoWindow é fechado, mas o evento click não é gerado no meu contêiner.

A API do Google Maps fornece um closeclick evento que é levantado quando a InfoWindow é fechada, no entanto este evento não pode ser acessado (não está presente como um parâmetro):

google.maps.event.addListener(infowindow, "closeclick", function() {
// The API function doesn"t have the e parameter, I can"t access closeclick
});

Como meu contêiner é vinculado a click De qualquer forma, eu não tenho certeza closeclick.stopPropagation() teria funcionado. Então, estou procurando uma maneira de acessar o evento de clique lançado pelo Google Map quando o usuário clica na cruz. É claro que o html do google maps está tão confuso que não consigo acessar o elemento DOM cruzado para adicionar um eventListener a ele (é apenas divs em todos os lugares, sem classes).

Alguma sugestão?

Edit: Como solução alternativa, consertei esse problema modificando meu próprio código e testando de onde vem o evento quando ele é capturado pelo meu contêiner:

container.addEventListener("click", function(ev) {
if (ev.target.src == "https://maps.gstatic.com/mapfiles/api-3/images/mapcnt6.png") {
return false;
}
// the code I want to execute only when the click event doesn"t come from the InfoWindow
});

Respostas:

0 para resposta № 1
google.maps.event.addListener(infowindow, "closeclick", function(e) {
e.stopPropagation();
});

Isso não funciona?


0 para resposta № 2

Você pode usar o seguinte código que me ajudou:

var aListener = google.maps.event.addListener(map, "click", function(event) {
// Try to prevent event propagation to the map
event.stop();
event.cancelBubble = true;
if (event.stopPropagation) {
event.stopPropagation();
}
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
});