0

如果在关闭 infoWindow 时满足某些条件,我想阻止触发的默认关闭事件。有可能实现吗?我尝试了很多方法,例如:

  1. 停止事件传播
  2. 从回调方法返回 false
  3. infoWindow 也没有任何方法/属性可以防止关闭。

请让我知道这是否可能。

4

3 回答 3

0

InfoWindow 并没有真正提供步进事件传播的方法。我不知道它是否适合您,但有一个InfoBox 实用程序库,它确实为您提供了更多的控制烤箱的行为。具体到您的问题,InfoBoxOptionsapi-doc对象包括属性:

enableEventPropagation, 一个布尔值,它将允许您控制是否InfoBox将:在 InfoBox 中传播 mousedown、click、dblclick 和 contextmenu 事件(默认为 false 以模仿 a 的行为google.maps.InfoWindow)。如果 InfoBox 被用作地图标签,则将此属性设置为 true。iPhone注意:此属性设置无效;事件总是被传播。

于 2012-05-21T11:54:54.020 回答
0

你总是可以监听 close 事件,然后抛出一个 javascript 错误来阻止它关闭。前任:

google.maps.event.addListener(my_infoWindow, 'closeclick', function(e){
    // Throw an error to stop the close
    throw "stop close";
})
于 2014-03-10T13:21:57.587 回答
0

您唯一能做的就是抓住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] 标记的引用,您甚至可以随意打开和关闭它。

编辑:

这个黑客的演示

于 2012-05-21T19:37:52.627 回答