【问题标题】:google.maps.event.trigger not run when map reload重新加载地图时 google.maps.event.trigger 不运行
【发布时间】:2014-05-06 09:36:41
【问题描述】:

我有一个使用 Google maps api v3 的项目,我正在使用 google.maps.event.trigger 来调用或触发在地图加载时创建的侦听器。在这种情况下,我在单击多边形时设置了侦听器,因此当单击多边形时,它会打开相关的信息窗口,并且在同一 javascript 文件中的另一个函数块上设置 google.maps.event.trigger。 重新加载整个 Web 程序时,它运行良好。但是当我重新加载地图或使用具有相同变量对象的多边形重新初始化地图时,语法google.maps.event.trigger 不会运行。这是我使用google.maps.event.trigger的函数

 function callInfoPoly(nomor){
    alert(polygon[nomor].getPath().getAt(0));
    google.maps.event.trigger(polygon[nomor], "click");
    }

警报运行良好,这意味着变量包含多边形对象,但google.maps.event.trigger 没有运行。

【问题讨论】:

  • 你能给那个页面的链接或创建一个演示吗?
  • 我尝试在 fiddle 上进行演示,请稍候,谢谢您的回复
  • 这是我的一些代码:jsfiddle.net/69wZu/4 但很抱歉我不能让它工作,也许你可以帮忙

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


【解决方案1】:

当您在触发点击后查看控制台时,您会看到一个错误:

Uncaught TypeError: Cannot read property 'vertex' of undefined 

这个未定义的对象是一个 PolyMouseEvent 。当真正的点击发生时,这个对象将被传递给点击回调。但是,当您以编程方式触发点击时,该对象会丢失,导致上述错误的原因是什么(并在重新初始化地图后以某种方式停止点击侦听器的绑定)。

解决方案:当您以编程方式触发点击时,将一个空对象作为参数传递给点击回调:

google.maps.event.trigger(polygon[nomor], "click", {});

演示:http://jsfiddle.net/doktormolle/jVFN2/

【讨论】:

  • Google...您的 API 的... woof。感谢您解决这个问题,带我永远!
  • 这行得通,除非您有像自定义信息窗口这样的东西,它希望在地图上打开一个位置,在这种情况下,您需要提供一个 polymouseevent(它扩展了 mouseevent),它需要 latLng属性,因此您传递 {latLng:new LatLng(etc)} 而不是 {}
猜你喜欢
  • 2015-06-26
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
相关资源
最近更新 更多