如果在关闭 infoWindow 时满足某些条件,我想阻止触发的默认关闭事件。有可能实现吗?我尝试了很多方法,例如:
- 停止事件传播
- 从回调方法返回 false
- infoWindow 也没有任何方法/属性可以防止关闭。
请让我知道这是否可能。
如果在关闭 infoWindow 时满足某些条件,我想阻止触发的默认关闭事件。有可能实现吗?我尝试了很多方法,例如:
请让我知道这是否可能。
InfoWindow 并没有真正提供步进事件传播的方法。我不知道它是否适合您,但有一个InfoBox 实用程序库,它确实为您提供了更多的控制烤箱的行为。具体到您的问题,InfoBoxOptions
api-doc对象包括属性:
enableEventPropagation
, 一个布尔值,它将允许您控制是否InfoBox
将:在 InfoBox 中传播 mousedown、click、dblclick 和 contextmenu 事件(默认为 false 以模仿 a 的行为google.maps.InfoWindow
)。如果 InfoBox 被用作地图标签,则将此属性设置为 true。iPhone注意:此属性设置无效;事件总是被传播。
你总是可以监听 close 事件,然后抛出一个 javascript 错误来阻止它关闭。前任:
google.maps.event.addListener(my_infoWindow, 'closeclick', function(e){
// Throw an error to stop the close
throw "stop close";
})
您唯一能做的就是抓住closeclick
导致您无处可去的事件。
我曾经一起破解过一些东西,一个一次性的解决方案,它可能对你有用,也可能对你不起作用:我已经确定了一种到达用户单击关闭的 x 标记的方法,并将其删除。用户无法关闭 infoWindow。完全没有。您仍然可以通过调用 .close()。
警告!这是一个黑客
var a=document.getElementById('map_canvas');
var b=a.getElementsByTagName('img');
var i, j=b.length;
for (i=0; i<j; i++) {
if(b[i].src.match('imgs8.png')){
if(b[i].style.left=='-18px') {
c=b[i].parentElement.parentElement;
console.log(c);
if(c.innerText.match("Map data")) {
console.log('no');
} else {
b[i].parentElement.removeChild(b[i]);
}
}
}
}
现在。如果您存储对 [x] 标记的引用,您甚至可以随意打开和关闭它。
编辑: