Bing Maps Infobox mouseout事件问题:使用异步调用更改htmlContent时

时间:2017-07-12 15:14:35

标签: javascript bing-maps

我希望有人可以提供帮助。

我正在使用Bing Maps(v8 - 最新版本),但是当我创建一个自定义信息框并使用异步请求填充内容时,是否为setTimeout / ajax - 即使鼠标光标是(看似鼠标)也会触发mouseout事件)在信息框窗口的边界内。即使我对信息框进行了小的额外更改(DOM),鼠标输出也会触发,因此它不会以任何方式擦除信息框,然后刷新...除非M $做一些奇怪的事情!

var map = new Microsoft.Maps.Map(document.getElementById('myMap'), {
    credentials: 'My Bing Maps Key',
    center: new Microsoft.Maps.Location(47.60357, -122.32945)
});

var pushpins = Microsoft.Maps.TestDataGenerator.getPushpins(2, map.getBounds());
var infobox = new Microsoft.Maps.Infobox(pushpins[0].getLocation(), { 
htmlContent: '<div style="height: 200px; width: 200px; background-color: #fff">{content}</div>', visible: false });

infobox.setMap(map);
for (var i = 0; i < pushpins.length; i++) {
    var pushpin = pushpins[i];
    Microsoft.Maps.Events.addHandler(pushpin, 'mouseover', openInfoboxForPin);
    Microsoft.Maps.Events.addHandler(pushpin, 'mouseout', closeInfobox);
}
map.entities.push(pushpins);

function openInfoboxForPin(e) {
    //Make sure the infobox has metadata to display.
    if (e.target) {
        //Set the infobox options with the metadata of the pushpin.
        infobox.setOptions({
            location: e.target.getLocation(),
            visible: true,
        });

        setTimeout(function() {
            infobox.setOptions({ htmlContent: pushpinFrameHTML.replace('{content}',html) });
        }, 400);
    }
}

function closeInfobox() {
    infobox.setOptions({ visible: false });
}

JSFIDDLE:Fiddle example here

请帮忙。 感谢

1 个答案:

答案 0 :(得分:0)

我已经在所有支持的浏览器中尝试过您的代码,它按预期工作100%。当图钉和信息框之间出现信息框时,鼠标事件应该触发,从而导致鼠标移除事件。