谷歌地图和事件

时间:2011-05-26 15:49:08

标签: google-maps-api-3

我正在尝试使用鼠标悬停和鼠标输出标记的功能,然后弹出infowindow并自动关闭它。然后,当用户单击标记时,我禁用该标记的mouseout以显示infowindow,直到用户手动关闭它。我想在用户点击infowindow的关闭时将鼠标添加回标记。

我有这段代码:

google.maps.event.addListener(marker, 'mouseover', function() {
    infowindow.open(map, marker);
});
google.maps.event.addListener(marker, 'mouseout', function() {
    //setTimeout(function() { infowindow.close(); }, 3000);
    infowindow.close(map, marker);
});
google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map, marker);            
    google.maps.event.clearListeners(marker, 'mouseout');
});

我正在尝试使用'click'事件来禁用'mouseout'。以上工作。现在我想在infowindow关闭后使用下面的'closeclick'添加'mouseout'事件。

google.maps.event.addListener(infowindow, 'closeclick', function() {
    //google.maps.event.addListener(marker, 'mouseout', "");
});

我不知道该怎么做。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

我想出来并认为我会分享:

function attachData(marker, number) {
    //snipped code that adds the events that are removed in closeMarker
    google.maps.event.addListener(infowindow, 'closeclick', function() {
            closeMarker(marker, number);
    });
}

closeMarker函数清除所有当前事件,并通过调用attachData函数将其添加回来。

function closeMarker(marker, number) {
        google.maps.event.clearListeners(marker, 'mouseover');
        google.maps.event.clearListeners(marker, 'mouseout');
        google.maps.event.clearListeners(marker, 'click');
        google.maps.event.clearListeners(marker, 'closeclick');
        attachData(marker, number);
    }