4

我目前正在使用 Google Maps 的 InfoBox 插件。不幸的是,我遇到了一个烦人的问题。

我的应用程序上的用户可以通过将鼠标悬停在相应的标记上来打开信息框。这很好用。当信息框打开并且用户将鼠标悬停在它上面时,就会出现问题。出于某种原因, InfoBox下方的标记正在触发它们的鼠标悬停事件。这是一个大问题,因为它在打开属于刚刚触发其鼠标悬停事件的标记的框之前关闭当前框。我进行了一些搜索,发现将每个标记设置为:

optimized: false

防止这个错误。但是,此选项会减慢地图的速度并使其使用起来很麻烦。

我的信息框:

infoWindows[obj.VehicleName] = new InfoBox({
    content: contentString,
    disableAutoPan: false,
    maxWidth: 500,
    pixelOffset: new google.maps.Size(-250, -490),
    boxStyle: {
         width: "500px"
    },
    enableEventPropagation: false,
    infoBoxClearance: new google.maps.Size(45, 1)
});

我的听众:

google.maps.event.addListener(marker, 'mouseover', function() {
4

1 回答 1

3

丑陋的修复,因为没有一个广告选项(enableEventPropagation)似乎对我有用(我当然不想走在 300 多个标记上使用“优化:假”的路线)

在每个标记的 mouseover 侦听器中,我检查当前打开的 InfoWindow 是否被悬停:

google.maps.event.addListener(marker, 'mouseover', function() {

    //If an InfoBox is currently open
    if(openInfoBox !== null){

        var id = $(openInfoBox.getContent()).attr('id');
        //If the main div inside that InfoBox is currently being hovered over
        if ($('#' + id + ':hover').length) {
            return false; //go no further. i.e. ignore mouseover event for marker
        }

    }

    //Open InfoBox etc etc
于 2013-06-11T14:54:45.510 回答