我希望有人可以提供帮助。
我正在使用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
请帮忙。 感谢
答案 0 :(得分:0)
我已经在所有支持的浏览器中尝试过您的代码,它按预期工作100%。当图钉和信息框之间出现信息框时,鼠标事件应该触发,从而导致鼠标移除事件。