当地图重新加载时,Google.maps.event.trigger不会运行

google.maps.event.trigger not run when map reload

本文关键字:event maps Google trigger 运行 新加载 地图 加载      更新时间:2023-09-26

我有一个使用Google maps api v3的项目,我使用google.maps.event.trigger来调用或触发当地图加载时创建的侦听器。在这种情况下,我设置监听器在多边形点击,所以当多边形被点击,它打开相关的信息窗口和google.maps.event.trigger设置在同一javascript文件的另一个块的功能。当整个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不运行

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

Uncaught TypeError: Cannot read property 'vertex' of undefined 

这个未定义的对象是PolyMouseEvent。当真正的点击发生时,这个对象将被传递给点击回调函数。但是当您以编程方式触发点击时,这个对象就丢失了,这就导致了上面的错误(并且在重新初始化映射后以某种方式停止了点击侦听器的绑定)。

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

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

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