Google Maps API v3 - EventListeners`单击`和`closeclick`对infowindows有冲突吗?

时间:2012-06-11 07:59:07

标签: google-maps google-maps-markers infowindow event-listener

我正在使用事件clickcloseclick使用方法panTo()setZoom()设置不同的值。

因此,当用户点击地图标记时,它将平移到该标记并放大。此部分正常工作。然后,当infowindow关闭时,我希望它缩小并平移到原始位置(不工作)。

这两个事件在我的代码中似乎有冲突,所以我是否需要使用clearListeners来解决这个冲突?以下是相关代码:

function setInfoWindow(mapRef, mapSettings, mapMarker, markerInfoWindow)
{
    // event listener for infowindow of each map marker, onclick
    google.maps.event.addListener(mapMarker, "click", function()
    {
        markerInfoWindow.open(mapRef, this);
        mapRef.panTo(this.position);
        mapRef.setZoom(3);
    });

    // 
    google.maps.event.addListener(mapMarker, "closeclick", function()
    {
        mapRef.panTo(mapSettings.center);
        mapRef.setZoom(2);
    });

} // end of function setInfoWindow

1 个答案:

答案 0 :(得分:4)

这种情况正在发生,因为您没有在infoWindow上监听关闭事件,而是将其设置为标记。只需将代码中的mapMarker更改为markerInfoWindow

即可
google.maps.event.addListener(markerInfoWindow, "closeclick", function()
{
    mapRef.panTo(mapSettings.center);
    mapRef.setZoom(2);
});

一旦infoWindow关闭,这将触发:https://developers.google.com/maps/documentation/javascript/reference#InfoWindow向下滚动到Events,查看可以在infoWindow上添加监听器的其他事件。