bing 地图 api 防止在当前打开时打开相同的信息框
bing maps api prevent same infobox from opening while currently open
我正在使用 Bing 地图 API,但遇到了这个问题。单击图钉时,会显示信息框。但是,如果您继续单击图钉,它将继续打开更多信息框。如何防止这种情况,只打开一个信息框?
// MAP FUNCTIONS
Map.prototype.addPins = function (pins) {
if (!pins.length) return;
var bing = getBing(this);
var showPopup = function (e) {
var pin = e.target,
infoboxOptions = { pushpin: pin },
infobox = new Microsoft.Maps.Infobox(pin._location, infoboxOptions);
infobox.setHtmlContent(pin._data.popup);
bing.entities.push(infobox);
$('a.close').on('click', function () {
infobox.setHtmlContent("");
});
};
for (var i = 0; i < pins.length; i++) {
var pin = new Microsoft.Maps.Pushpin(pins[i].position, {
draggable: false,
htmlContent: '<i class="icon ' + pins[i].cssClass + '" />'
});
pin._data = pins[i];
Microsoft.Maps.Events.addHandler(pin, 'click', showPopup);
bing.entities.push(pin);
}
};
每次单击图钉时,您都会创建一个新的信息框。处理信息框的一种更有效的方法是创建一个信息框并重用它。这是一篇博客 post,概述了如何做到这一点:
https://rbrundritt.wordpress.com/2011/10/13/multiple-pushpins-and-infoboxes-in-bing-maps-v7/
我正在使用 Bing 地图 API,但遇到了这个问题。单击图钉时,会显示信息框。但是,如果您继续单击图钉,它将继续打开更多信息框。如何防止这种情况,只打开一个信息框?
// MAP FUNCTIONS
Map.prototype.addPins = function (pins) {
if (!pins.length) return;
var bing = getBing(this);
var showPopup = function (e) {
var pin = e.target,
infoboxOptions = { pushpin: pin },
infobox = new Microsoft.Maps.Infobox(pin._location, infoboxOptions);
infobox.setHtmlContent(pin._data.popup);
bing.entities.push(infobox);
$('a.close').on('click', function () {
infobox.setHtmlContent("");
});
};
for (var i = 0; i < pins.length; i++) {
var pin = new Microsoft.Maps.Pushpin(pins[i].position, {
draggable: false,
htmlContent: '<i class="icon ' + pins[i].cssClass + '" />'
});
pin._data = pins[i];
Microsoft.Maps.Events.addHandler(pin, 'click', showPopup);
bing.entities.push(pin);
}
};
每次单击图钉时,您都会创建一个新的信息框。处理信息框的一种更有效的方法是创建一个信息框并重用它。这是一篇博客 post,概述了如何做到这一点:
https://rbrundritt.wordpress.com/2011/10/13/multiple-pushpins-and-infoboxes-in-bing-maps-v7/