【问题标题】:Prevent Google maps infowindow from closing防止谷歌地图信息窗口关闭
【发布时间】:2012-05-21 09:54:55
【问题描述】:

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

  1. 停止事件传播
  2. 从回调方法返回 false
  3. infoWindow 没有公开任何阻止关闭的方法/属性。

如果可以,请告诉我。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您唯一能做的就是抓住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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 不幸的是,“e”是未定义的
        猜你喜欢
        • 1970-01-01
        • 2012-10-08
        • 2013-02-21
        • 1970-01-01
        • 1970-01-01
        • 2018-05-12
        • 2013-10-04
        • 2014-04-06
        • 2013-02-05
        相关资源
        最近更新 更多