地图重新加载时google.maps.event.trigger无法运行

时间:2014-05-06 09:36:41

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

我有一个使用Google maps api v3的项目,我使用google.maps.event.trigger来调用或触发地图加载时创建的侦听器。在这种情况下,我在多边形单击时设置侦听器,因此当单击多边形时,它会打开相关的infowindow,并在同一个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不运行。

1 个答案:

答案 0 :(得分:8)

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

Uncaught TypeError: Cannot read property 'vertex' of undefined 

这个未定义的对象是PolyMouseEvent。发生实际点击时,此对象将传递给click-callback。但是当您以编程方式触发单击此对象时,会导致上述错误(并在重新初始化地图后以某种方式停止对单击侦听器的绑定)。

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

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

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