防止谷歌地图信息窗关闭

时间:2012-05-21 09:54:56

标签: google-maps google-maps-api-3 infowindow

如果在关闭infoWindow时满足某些条件,我想阻止触发的默认关闭事件。是否有可能实现这一目标?我尝试了很多类似的事情:

  1. 停止事件传播
  2. 从回调方法返回false
  3. infoWindow没有任何方法/属性阻止关闭。
  4. 如果可能,请告诉我。

3 个答案:

答案 0 :(得分:0)

InfoWindow并没有真正提供步骤事件传播的方法。我不知道它是否适合你,但是有一个InfoBox Utility Library确实可以为你提供更多控制烤箱的行为。具体到您的问题,InfoBoxOptions api-doc对象包含属性:

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

答案 1 :(得分: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]标记的引用,您甚至可以随意打开和关闭它。

修改

A demonstration of this hack

答案 2 :(得分:0)

您可以随时侦听close事件,然后抛出一个javascript错误以防止它关闭。例如:

google.maps.event.addListener(my_infoWindow, 'closeclick', function(e){
    // Throw an error to stop the close
    throw "stop close";
})