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

Vir*_*gun 2 javascript google-maps google-maps-api-3

我有一个使用谷歌地图api v3的项目,我google.maps.event.trigger用来调用或触发地图加载时创建的监听器.在这种情况下,我在多边形单击时设置侦听器,因此当单击多边形时,它会打开相关的infowindow并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");
    }
Run Code Online (Sandbox Code Playgroud)

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

Dr.*_*lle 8

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

Uncaught TypeError: Cannot read property 'vertex' of undefined 
Run Code Online (Sandbox Code Playgroud)

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

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

google.maps.event.trigger(polygon[nomor], "click", {});
Run Code Online (Sandbox Code Playgroud)

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